@time 2019-08-04
@author Ruo_Xiao
一、定义
队列是一种操作受限的线性表,只能从一端插入从另一端弹出的数据结构。
二、特性
先进者先出,后进者后出。
三、分类
1、基于数组实现的队列,名为顺序队列。实现一个有界队列。
2、基于链表实现的队列,名为链式队列。实现一个无界队列。
3、若队列收尾相连,则该队列名为循环队列。
4、阻塞队列,在队列中增加了阻塞操作的功能。
- 当队列为空,从队头取出元素,会堵塞在那里,直到有元素入队,该操作才取出元素并返回。
- 当队列为满,向队尾插入元素,会堵塞在那里,直到有元素出队,该操作才插入元素并返回。
5、并发队列,线程安全的队列。就是在 enqueue 和 dequeue 中加入锁。
四、应用场景
1、线程池中,若线程不足,请求操作可以暂存在队列中,依次等待线程池中有线程。
2、消息队列,用于两个模块解耦、削峰、异步等操作。
五、实现(C++)
六、拓展
- dueue,双端队列。
- 在 STL 中,queue 的底层实现就是 dueue 。
- 相较于 queue,
- 既可以从队尾压入数据(push_back),也可以从队首压入数据(push_front)。
- 既可以从队尾弹出数据(pop_back),也可以从队尾弹出数据(pop_front)。
(SAW:Game Over!)