
一起动脑筋 · 先看一个小故事
女孩和机器人排队借书,先来的先办理,后来的人站到队尾。
把过程摊开来看
- 小明到队首
- 女孩到排在后面
- 机器人到队尾
- 服务顺序小明、女孩、机器人
队列按先进先出的规则处理元素。
从队尾加入,从队首取出,可以保留到达顺序。与栈相反,最后到的不会优先离开。
从队尾加入,从队首离开
从左到右表示队首到队尾。先猜哪一个会先离开。
1
1 号目前既是队首也是队尾。
12
2 号排在 1 号后面。
123
3 号进入队尾,不插到最前。
23
1 号先离开,2 号成为新的队首。
01什么是队列?
队列(Queue)是一种按照进入顺序处理元素的数据结构。
队头 ABC 队尾
02为什么像排队买票?
A 最先来,所以 A 最先被服务;C 最后来,所以通常最后被服务。
先进先出(FIFO)
03队列从哪里进、从哪里出?
队尾
新元素从这里加入。
队头
最早进入的元素从这里移除。
04常见操作是什么?
push
加入队尾。
pop
移除队头。
front
查看队头。
back
查看队尾。
05C++ 里怎样使用队列?
#include <queue>
std::queue<int> q;
q.push(10);
q.push(20);
std::cout << q.front(); // 10
q.pop();
06队列能解决什么问题?
- 打印任务
- 消息处理
- BFS 广度优先搜索
- 按到达顺序处理请求
07队列一定公平吗?
普通 FIFO 队列按照进入顺序处理,但现实系统可能还有优先队列、超时、取消等额外规则。
你已经知道了什么
- 队列遵循先进先出。
- 新元素从队尾加入,旧元素从队头移除。
- front 查看队头,back 查看队尾。
- 队列常用于按到达顺序处理任务。
- BFS 是队列的重要应用之一。
下一篇:链表:数据也可以手拉手
轮到你来试一试
1、2、3 依次入队,第一次出队是谁?
想好了吗?点开看解释
1。它最早进入。出队后 2 成为队首。