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)

相关推荐

  • GO中range怎么用

    技术GO中range怎么用这篇文章给大家分享的是有关GO中range怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。GO 语言的 for…range 能做什么呢?golang 的 for

    攻略 2021年10月31日
  • c语言中常见的常量类型是什么(c语言符号常量定义的关键字)

    技术C语言中几种常量的认识和理解是怎样的本篇文章为大家展示了C语言中几种常量的认识和理解是怎样的 ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、C语言常量是什么?常量是指在程

    攻略 2021年12月13日
  • 如何快速掌握Fink SQL

    技术如何快速掌握Fink SQL这篇文章主要讲解了“如何快速掌握Fink SQL”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何快速掌握Fink SQL”吧!1、导入所

    攻略 2021年10月22日
  • 怎么使用JS

    技术怎么使用JS本篇内容主要讲解“怎么使用JS”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用JS”吧!1. Function 构造函数Function()构造函数虽然

    攻略 2021年10月30日
  • mysql常用的查询语句(mysql用来分析查询的语句)

    技术MySQL中常用的查询子句有哪些这篇文章给大家分享的是有关MySQL中常用的查询子句有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。对于数据分析,MySQL多采用查询,如数据的排序、分

    攻略 2021年12月20日
  • Python包装不上怎么解决

    技术Python包装不上怎么解决本篇内容介绍了“Python包装不上怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

    攻略 2021年11月29日