博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五节 Go数据结构之队列
阅读量:5202 次
发布时间:2019-06-13

本文共 830 字,大约阅读时间需要 2 分钟。

一、什么是队列

1265156-20180922212918641-1971526896.png

数据结构里的队列就是模仿现实中的排队。如上图中狗狗排队上厕所,新来的狗狗排到队伍最后,最前面的狗狗撒完尿走开,后面的跟上。可以看出队列有两个特点:

(1) 新来的都排在队尾;
(2) 最前面的办理业务后离队,后面一个跟上。
根据特点,计算机砖家就归纳以下队列结构。
1265156-20180922212942981-356260816.png

队列简称FIFO,含义自己体会。

二、队列的结构
1265156-20180922213007938-1448281605.png

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

三、接口说明及实现
1265156-20180922213030139-2030180854.png

1、Init

初始化队列,其实是初始化里面单链表。

func (queue *Queue) Init() {lst := new(List)(*queue).list = lstlst.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()}

四、小结

这里小结大卫哥不说废话,和上节一样,如果用双向链表或其他结构能否实现队列?队列可以应用在顺序处理流中,包括事件循环,并发处理,操作同步等等。

转载于:https://www.cnblogs.com/lanrenji/p/9691291.html

你可能感兴趣的文章
Eclipse更新SDK速度慢,解决办法
查看>>
将博客搬至CSDN
查看>>
具体解释MVP矩阵之ViewMatrix
查看>>
Aizu 2170 Marked Ancestor(并查集变形)
查看>>
CDH安装
查看>>
【转载】Windows Server2012安装IIS服务器
查看>>
Global.asax 文件
查看>>
Ubuntu打开core dump
查看>>
crontab环境变量问题导致执行nodejs脚本失败
查看>>
Android : No Launcher activity found!
查看>>
Silverlight自定义控件开发:仪表盘
查看>>
三层交换机+VLAN中继
查看>>
分块的一些题(入门)
查看>>
xshell学习笔记
查看>>
记一次JavaWeb网站技术架构总结
查看>>
微服务架构实践之邮件通知系统改造
查看>>
sgu Ice-cream Tycoon
查看>>
EF CodeFirst,同项目多个数据库的迁移
查看>>
OLEDB的Excel的IMEX和HDR是什么意思
查看>>
《think in python》学习-10
查看>>