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)

相关推荐

  • 抖音刷点赞刷粉,抖音3元1000粉自助下单网址?

    技术抖音刷点赞刷粉,抖音3元1000粉自助下单网址?抖音刷赞的妙用,抖音刷赞有那些用处,随着抖音的火爆,现在入住抖音的用户那是相当多呀,入住抖音的用户多了,当然抖音内部的竞争也就大了,有部分抖音新人没有人气,没有名气,响

    测评 2021年10月19日
  • opencore实现了无痛升级吗(opencore是通过什么启动)

    技术OpenCore的优势有哪些这篇文章主要为大家展示了“OpenCore的优势有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“OpenCore的优势有哪些”这篇文章吧。

    攻略 2021年12月24日
  • 如何进行Oracle监听器日志的解析

    技术如何进行Oracle监听器日志的解析如何进行Oracle监听器日志的解析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。///////////////

    攻略 2021年11月30日
  • 无线网卡怎么用,如何使用无线网卡进行上网

    技术无线网卡怎么用,如何使用无线网卡进行上网1、把无线网卡连接到电脑的USB接口。连接上之后无线网卡怎么用,电脑就会自动安装无线网卡驱动。2、无线网卡的种类是非常多的,有些需要连接到主机插槽里。直接可以连接到电脑USB接

    生活 2021年10月31日
  • mysqlhotcopy备份报错该怎么解决

    技术mysqlhotcopy备份报错该怎么解决mysqlhotcopy备份报错该怎么解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。问题:

    攻略 2021年12月4日
  • 吵架了怎么和好,夫妻吵架你们都是怎么和好的

    技术吵架了怎么和好,夫妻吵架你们都是怎么和好的夫妻之间的打打闹闹,闹别扭吵吵嘴,这是经常事儿吵架了怎么和好。如果说夫妻二人总是相近如宾总是如意潭,平静的水没有波澜的话,这个爱情也没有什么激情。反倒是有时候两个人吵吵嘴,为

    生活 2021年10月26日