6、队列
队列是一种线性数据结构,它通过执行两个主要操作(即入队enqueue和出队dequeue)来对现实世界中的队列进行建模。
6.1、术语
- Dequeue:出队,类似命名:Polling
- Enqueue:入队,类似命名:Adding,Offering
- Queue Front:对头
- Queue Back:队尾
队列底层可以使用数组或者链表实现
6.2、使用场景
- 任何排队等候的队伍都可以建模为Queue,例如在电影院里的队伍;
- 可用于有效地跟踪最近添加的x个元素;
- 用于Web服务器请求管理,保证服务器先接受的先处理;
- 图的广度优先搜索(BFS)。
6.2.1、请用队列实现图的广度优先遍历
提示:
遍历顺序:0 -> 2, 5 -> 6 -> 1 -> 9, 3, 2, 7 -> 3, 4, 8, 9
6.3、时间复杂度
操作 | 时间复杂度 |
---|---|
入队 | O(1) |
Dequeue | O(1) |
Peeking | O(1) |
Contains | O(n) |
Removal | O(n) |
isEmpty | O(1) |
6.4、编程实践
- 基于数组实现的Queue:ArrayQueue
- 基于链表实现的Queue:LinkedListQueue
- 练习: