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)

相关推荐

  • Redis单线程的reactor模型是怎样的

    技术Redis单线程的reactor模型是怎样的这篇文章主要讲解了“Redis单线程的reactor模型是怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis单

    攻略 2021年12月11日
  • HBase原理、基本概念、基本架构-3

    技术HBase原理、基本概念、基本架构-3 HBase原理、基本概念、基本架构-3HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型

    礼包 2021年12月22日
  • shotcut用什么剪辑(shotcut实用功能)

    技术Shotcut有什么用小编给大家分享一下Shotcut有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Shotcut是一个免费、开放

    攻略 2021年12月24日
  • 实验二 数组、指针和c++标准库

    技术实验二 数组、指针和c++标准库 实验二 数组、指针和c++标准库实验任务5
    Info.hpp#ifndef INFO_HPP
    #define INFO_hpp#includeiostream
    #i

    礼包 2021年11月1日
  • Java怎么实现教材管理系统

    技术Java怎么实现教材管理系统这篇文章给大家介绍Java怎么实现教材管理系统,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、项目简述功能包括: 管理员可以增删改查教材、教材商、入库教材、用户(用

    攻略 2021年11月24日
  • 怎么写androidinit(android rc文件)

    技术如何进行android启动过程中init.rc文件的浅析本篇文章为大家展示了如何进行android启动过程中init.rc文件的浅析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收

    攻略 2021年12月18日