《数据结构:从0到1》-09-队列
队列(Queue):先进先出
还记得我们上一篇文章聊的“栈”吗?那种后进先出(LIFO)的规则,就像我们叠盘子一样。今天,我们要来聊聊它的好兄弟——队列(Queue)。如果说栈是“后来者居上”,那队列就是彻头彻尾的“先来后到”,它讲究公平,讲求秩序。
计算机里面好多理论都是源于生活,队列就是其中一个经典例子。下面以奶茶店排队的场景为例,详细介绍一下:
- 你先来的,所以你排在最前面。
- 后面来的人,依次排在队伍末尾。
- 店员做完一杯奶茶,总是递给队伍最前面的人。
- 最前面的人拿到奶茶后离开,后面的人依次向前移动一位。
这个“排队的队伍”,就是队列在现实世界中最完美的体现! 它的核心规则就是 FIFO,也就是 先进先出。
在计算机世界里,队列几乎无处不在:打印任务排队、CPU进程调度、网络数据包缓存、甚至是我们在键盘上敲下的每一个字符等等,涉及到的底层逻辑都离不开队列。
今天,就让我们一起从零开始盘一盘队列!
本篇学习路线图:
一、 队列是什么?
在开始敲代码之前,我们必须从骨子里理解队列的定义和操作。
1.1 队列的定义与核心特性
队列(Queue) 是一种特殊的线性表,它只允许在表的前端进行删除操作,在表的后端进行插入操作。
我们把进行插入操作的一端称为 队尾(Rear),把进行删除操作的一端称为 队头(Front)。
队列的两个核心操作:
- 入队(Enqueue):将一个新元素放入队尾。
- 出队(Dequeue):从队头移除一个元素。
通常还会伴随两个常用的操作:
- 获取队头元素(Peek/Front):看一眼队头是谁,但不让它出队。
- 判断队列是否为空(IsEmpty):看看队伍里是不是没人了。
队列的FIFO特性,就像一根单行道的水管:
- 水从一端(队尾)流入
- 从另一端(队头)流出
- 先流进去的水,一定会先流出来

