第五节 Go数据结构之队列
一、什么是队列

数据结构里的队列就是模仿现实中的排队。如上图中狗狗排队上厕所,新来的狗狗排到队伍最后,最前面的狗狗撒完尿走开,后面的跟上。可以看出队列有两个特点:
(1) 新来的都排在队尾;
(2) 最前面的办理业务后离队,后面一个跟上。
根据特点,计算机砖家就归纳以下队列结构。

队列简称FIFO,含义自己体会。
二、队列的结构

继续大卫哥的拆卸手。队列拆成容器和链表,分别用结构和单链表实现,如上图。
三、接口说明及实现

1、Init
初始化队列,其实是初始化里面单链表。
func (queue *Queue) Init() {
lst := new(List)
(*queue).list = lst
lst.Init()
}
2、Enqueue
有尿的小狗狗排队。
func (queue *Queue) Enqueue(data Object) bool {
return (*queue).list.Append(data)
}
3、Dequeue
撒完尿的小狗狗出列。
func (queue *Queue) Dequeue() Object {
return (*queue).list.RemoveAt(0)
}
4、Peek
时不时偷看队头狗狗,这个癖好好特别。
func (queue *Queue) Peek() Object {
return (*queue).list.First()
}
5、GetSize
场地有限,队伍不能太长,得随时掌握队伍长度。
func (queue *Queue) GetSize() uint64 {
return (*queue).list.GetSize()
}
四、小结
这里小结大卫哥不说废话,和上节一样,如果用双向链表或其他结构能否实现队列?队列可以应用在顺序处理流中,包括事件循环,并发处理,操作同步等等。
第五节 Go数据结构之队列的更多相关文章
- 第五章:javascript:队列
队列是一种列表,不同的是队列只能在末尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据.先进先出.这点和栈不一样,在栈中,最后入栈的元素反被优先处理.可以将队列想象成银行排队办理业务的人,排队在 ...
- 第四百一十五节,python常用排序算法学习
第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 第五节 RabbitMQ在C#端的应用-消息收发
原文:第五节 RabbitMQ在C#端的应用-消息收发 版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/873 ...
- android内部培训视频_第五节(1)_OA实战之登录界面
第五节(1):OA实战之登录界面 一.登录界面布局 1.背景图片 2.文本框 3.checkbox 4.按钮 暂未实现点击切换图片效果 <RelativeLayout xmlns:androi ...
- 基于Extjs的web表单设计器 第五节——数据库设计
这里列出表单设计器系列的内容,6.7.8节的内容应该在春节后才有时间出了.因为这周末就请假回老家了,准备我的结婚大事.在此提前祝大家春节快乐! 基于Extjs的web表单设计器 基于Extjs的web ...
- JAVA GC之标记 第五节
JAVA GC之标记 第五节 OK,我们继续昨天最后留下的问题,什么是标记?怎么标记? 第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的清理. 至于怎么标记,一般有两种方 ...
- 第五节 面向连接传输:TCP
第五节 面向连接传输:TCP TCP概述RFCs:793,1122,1323,2018,2581 点对点: 一个发送方,一个接收方 可靠,按序的字节流: 无“报文边界”,无结构但有 ...
- VUE2.0实现购物车和地址选配功能学习第五节
第五节 单件商品金额计算和单选全选功能 1.vue精髓在于操作data模型来改变dom,渲染页面,而不是直接去改变dom 2.加减改变总金额功能: html:<div class="c ...
随机推荐
- maven仓库使用HTTP代理,maven仓库使用本地jar
setting.xml <proxies> <proxy> <id>proxy</id> <active>true</active&g ...
- ZT sem_init sem_wait sem_post sem_destroy
sem_init() 2009-06-26 16:43:11| 分类: linux |字号 订阅 信号量的数据类型为结构sem_t,它本质上是一个长整型的数.函数sem_init()用来 ...
- Hystrix请求熔断与服务降级
Hystrix请求熔断与服务降级 https://www.cnblogs.com/huangjuncong/p/9026949.html SpringCloud实战-Hystrix请求熔断与服务降级 ...
- 规约模式的ef拼接
public class LamadaExtention<Dto> where Dto : new() { private List<Expression> m_lstExpr ...
- IntelliJ IDEA中 查看某个类中的所有方法
方法一:alt + 7 方法二: ctrl + F12 方法三: 自定义 File Structure
- Windows彻底卸载系统自带的office
由于自带office导致按照新的office会提示要先卸载原来32位的office,又在控制面板或软件管理工具中找不到office,用如下方法删除 1.在C盘删除office文件夹 2.删除注册表 1 ...
- BZOJ 1878 [SDOI2009]HH的项链 【莫队】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=1878 1878: [SDOI2009]HH的项链 Time Limit: 4 Sec M ...
- win7 xampp php7 yii2 配置sqlserver
第一步: https://www.microsoft.com/en-us/download/details.aspx?id=20098 下载 如下图 php7 版本 放到 xampp\php ...
- 数据元&数据字典&元数据
1. 数据元 data element(数据元素),单个数据单元,是数据的基本单位.参阅data field(数据字段). 2. 元数据 首先,我们举个例子来看看什么叫做“元”,在后现代主义文学中有一 ...
- mybatis会对多参数方法进行特殊处理
例如:查询id=1,name=tom的一条数据 查询接口: User getUserByIdAndName(Integer id,String name); // <?xml version=& ...