一、什么是队列

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

(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()
}

四、小结

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

代码下载

最新文章

  1. 配置Office 365单点登录摘要
  2. Java IO4:字符编码
  3. Maven的作用总结
  4. BEvent_标准控件Event的用法(案例)(待整理)
  5. linux fork函数与vfork函数,exit,_exit区别
  6. jquery插件dataTables添加序号列
  7. 从零开始学习jQuery (八) 插播:jQuery实施方案
  8. JQuery属性过滤(转)
  9. SIM卡尺寸及剪卡教程
  10. PHP配置安全小技巧
  11. Java并发编程深入学习
  12. [51nod1238]最小公倍数之和V3
  13. 2019微信公开课 同行With Us 听课笔记及演讲全文
  14. 【练习】Python第一,二次
  15. C语言进阶--DAY3
  16. MobSF移动渗透测试框架
  17. vue里的v-show和v-if
  18. Installing and removing VNC Connect | Red Hat | VNC Connect
  19. Nios内部RAM固化配置
  20. html5打开摄像头并用canvas模拟拍照 - 转

热门文章

  1. Linux文件系统检查错误
  2. Grunt 使用(二)uglify插件压缩javascript代码
  3. yii2.0数据库查询修改等方法
  4. Effective Java 第二版 Enum
  5. SAP S/4HANA CDS View的访问控制实现:DCL介绍
  6. 关于HiddenHttpMethodFilter
  7. c#用链表来存储并读取写好的配置文件
  8. window使用结束进程
  9. Code First 二 DataAnnotation 数据注解
  10. Django全面讲解(2/2)