女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

女孩和机器人排队借书,先来的先办理,后来的人站到队尾。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 小明到队首
  2. 女孩到排在后面
  3. 机器人到队尾
  4. 服务顺序小明、女孩、机器人

队列按先进先出的规则处理元素。

从队尾加入,从队首取出,可以保留到达顺序。与栈相反,最后到的不会优先离开。

从队尾加入,从队首离开

从左到右表示队首到队尾。先猜哪一个会先离开。

第 1 步 · 1 号到达
1

1 号目前既是队首也是队尾。

第 2 步 · 2 号到达
12

2 号排在 1 号后面。

第 3 步 · 3 号到达
123

3 号进入队尾,不插到最前。

第 4 步 · 服务一位
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 成为队首。