Go数据结构之队列

rhan-zz · · 9520 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、什么是队列

数据结构里的队列就是模仿现实中的排队。如上图中狗狗排队上厕所,新来的狗狗排到队伍最后,最前面的狗狗撒完尿走开,后面的跟上。可以看出队列有两个特点:
(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大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

9520 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
4 回复  |  直到 2017-11-28 14:58:46
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传