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)

相关推荐

  • 什么是C++引用

    技术什么是C++引用这篇文章主要介绍“什么是C++引用”,在日常操作中,相信很多人在什么是C++引用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是C++引用”的疑惑有所帮助!接下来,

    攻略 2021年11月1日
  • MySQL5.6.x sha256_password插件登入用户时报错怎么办

    技术MySQL5.6.x sha256_password插件登入用户时报错怎么办MySQL5.6.x sha256_password插件登入用户时报错怎么办,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因

    攻略 2021年10月26日
  • Java 实战中精品养老院管理系统的实现流程是怎样的

    技术Java 实战中精品养老院管理系统的实现流程是怎样的这期内容当中小编将会给大家带来有关Java 实战中精品养老院管理系统的实现流程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收

    攻略 2021年11月25日
  • RabbitMQ原理以及使用场景是什么

    技术RabbitMQ原理以及使用场景是什么本篇文章给大家分享的是有关RabbitMQ原理以及使用场景是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一.

    攻略 2021年11月23日
  • jquery字符串怎么转数字

    技术jquery字符串怎么转数字这篇文章主要介绍“jquery字符串怎么转数字”,在日常操作中,相信很多人在jquery字符串怎么转数字问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jqu

    攻略 2021年11月16日
  • PHP中跳转与重定向的区别有哪些

    技术PHP中跳转与重定向的区别有哪些这篇文章主要讲解了“PHP中跳转与重定向的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中跳转与重定向的区别有哪些”吧

    攻略 2021年11月4日