一、什么是队列
数据结构里的队列就是模仿现实中的排队。如上图中狗狗排队上厕所,新来的狗狗排到队伍最后,最前面的狗狗撒完尿走开,后面的跟上。可以看出队列有两个特点: (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() }
四、小结 这里小结大卫哥不说废话,和上节一样,如果用双向链表或其他结构能否实现队列?队列可以应用在顺序处理流中,包括事件循环,并发处理,操作同步等等。
代码下载 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|