Golang数组如何实现stack和queue数据结构

技术Golang数组如何实现stack和queue数据结构这期内容当中小编将会给大家带来有关Golang数组如何实现stack和queue数据结构,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有

在本期中,边肖将为您带来关于Golang数组如何实现堆栈和队列数据结构的信息。文章内容丰富,从专业角度进行分析和描述。看完这篇文章,希望你能有所收获。

堆栈是一系列对象的集合,原则是先进先出。

栈是最简单也是最重要的数据结构。它的添加、删除和查看都在栈顶操作。它具有以下属性:

S.push(e) :在堆栈顶部添加了一个e元素;

S.pop():删除堆栈中的顶部元素并返回;

如果堆栈为空,则返回true。

S.len():返回堆栈的长度。

S.top():返回栈顶数据。

堆栈通过如下数组实现:

包装主体

导入(

错误

fmt '

)

var(

stackIsNil=错误。新建(“空堆栈”)

)

类型堆栈[]int

//Push将数据插入堆栈顶部

函数(s *堆栈)推送(e int){ 0

*s=追加(*s,e)

返回

}

//Pop删除栈顶数据,返回删除的数据。

func (s *stack) Pop() (ret int,err err error){ 0

if len(* s)=0 {

返回0,堆栈为零

}

温度:=*s

ret=temp[len(temp)-1]

temp=temp[:len(temp)-1]

*s=温度

返回

}

//IsEmpty确定它是否为空。

func (s *stack) IsEmpty() bool {

返回透镜(* s)=0

}

//顶部获取堆栈的顶部数据

func (s *stack) Top() (int,错误){ 0

if len(* s)=0 {

返回0,堆栈为零

}

温度:=*s

返回温度[len(temp)-1],零

}

//Len获取堆栈长度

func (s *stack) Len() int {

返回镜头

}

func main(){ 0

s :=新(堆栈)

//插入1

南推动(1)

//插入2

南推动(2)

//插入5

南推动(5)

//获取长度

fmt。Println(s.Len()) //3

//获取栈顶数据

fmt。Println(s.Top()) //5

//删除顶部数据

fmt。Println(s.Pop()) //5

//获取长度

fmt。Println(s.Len()) //2

//判断是否为空栈

fmt。Println(s.IsEmpty())

} Queue也是一系列对象的集合,具有先进先出的原则。

队列的特点是访问和删除仅限于队列的第一个元素,插入仅限于队列的尾部。队列的属性有:

将一个元素插入队列的尾部;

q . queue():删除并返回第一个元素,如果队列为空,将报告错误;

Q.first():直接返回第一个元素,不删除元素,如果为空,会给出错误;

Q.isEmpty():返回true当队列为空时;

Q.len():返回队列长度。

数组实现队列代码:

包装主体

导入(

错误

fmt '

)

var(

ErrNilQueue=错误。新建(“队列为零”)

)

类型队列[]int

//将队列尾部插入数据

func(q * queue)Enqueue(e int){ 0

*q=追加(*q,e)

}

//出列队列删除第一个元素

func (q *queue)出列()(ret int,err error){ 0

if len(*q)==0 {

err=ErrNilQueue

返回

}

temp :=*q

ret=温度[0]

temp=temp[1:]

*q=温度

返回

}

//First返回第一个数据

func (q *queue) First() (ret int,err error){ 0

if len(*q)==0 {

err=ErrNilQueue

返回

}

temp :=*q

ret=温度[0]

返回

}

func (q *queue) IsEmpty() bool {

返回透镜(* q)=0

}

func (q *queue) Len() int {

返回透镜(*q)

}

func main(){ 0

q :=新(队列)

排队(1)

排队(10)

排队(20)

fmt。Println(q.First()) //1

fmt。Println(q .出列())//1

fmt。Println(q.First()) //10

fmt。Println(q.IsEmpty()) //false

fmt。Println(q.Len()) //2

fmt。Println(q .出列())//10

fmt。Println(q.Len()) //1

}以上就是边肖共享的Golang数组如何实现栈和队列的数据结构。如果你恰好也有类似的疑惑,可以参考上面的分析来理解。想了解更多,请关注行业信息渠道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/93993.html

(0)

相关推荐

  • CRM运行该怎么解决

    技术CRM运行该怎么解决本篇文章给大家分享的是有关CRM运行该怎么解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。北方某有线电视广播集团,集团核心CRM系

    攻略 2021年11月29日
  • iphone手机壁纸,苹果手机壁纸在哪里可以找到

    技术iphone手机壁纸,苹果手机壁纸在哪里可以找到1、解锁iPhoneiphone手机壁纸,然后找到设置,点击设置、墙纸。2、点击选取新的墙纸,能看到所有系统的壁纸。一、手机壁纸通常也被称之为手机图片,待机图片,就跟W

    生活 2021年10月28日
  • 在Eclipse下如何安装C++插件CDT

    技术在Eclipse下如何安装C++插件CDT小编给大家分享一下在Eclipse下如何安装C++插件CDT,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了

    攻略 2021年11月25日
  • Python数据拟合实现最小二乘法的示例分析

    技术Python数据拟合实现最小二乘法的示例分析今天就跟大家聊聊有关Python数据拟合实现最小二乘法的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。线性

    攻略 2021年10月20日
  • 韦编三绝是什么意思,韦编三绝的故事,简短些

    技术韦编三绝是什么意思,韦编三绝的故事,简短些早在春秋战国时期,由于纸尚未出现,人们用竹简通过熟牛皮串起来来写下书籍韦编三绝是什么意思。”韦编“就是熟牛皮的意思。韦编三绝顾名思义就是穿竹简的牛皮屡次断裂的意思。这其实是一

    生活 2021年10月24日
  • 1楼,为什么有人说买房子不要买一楼

    技术1楼,为什么有人说买房子不要买一楼为什么有人说买房子不要买一楼1楼?都有优势和劣势,它的优势是热天很凉快,不用开多少空调,可以在一楼做生意开个超市,可以在一楼,搞美容美发,也可以搞快递。不用拿铺面租金。老人孩子上下楼

    生活 2021年10月24日