队列与栈
2026/9/15大约 4 分钟
队列与栈
1. 考点:队列与栈的基本特点

2. 考点:循环队列

2.1 基本概念
- 循环队列:通过数组实现并通过整数取余运算来实现首尾相连的环形队列,从而解决普通队列假溢出问题。
- 最大优点:相比普通队列,入队和出队操作都不需要移动队列中的其他元素。
2.2 核心公式与条件(假设队列总容量为 size)
队空条件:
队满条件:
(注:通常会浪费一个存储单元来区分队空和队满)
队列长度计算公式:
3. 经典例题
3.1 题目一
题目: 设有栈 和队列 初始状态为空,数据元素序列 依次通过栈 ,且多个元素从 出栈后立即进入队列 ,若出队的序列是 ,则 中的元素最多时,栈底到栈顶的元素依次为( C )。
- A.
- B.
- C.
- D.
详细解析:
明确队列的进出规律:
- 队列 是先进先出(FIFO)的。既然题目给出的最终出队序列是 ,说明元素进入队列 的顺序必然也是 ****。
- 因为元素是从栈 出栈后立即进入队列 的,所以元素从栈 出栈的顺序也必须是:****。
模拟进栈与出栈过程:
我们要按照上述出栈顺序,配合输入序列 来推导栈 的变化状态:目标 1:先出栈
- 必须先将 入栈,再将 入栈。
- 此时栈 (栈底到栈顶):
- 出栈 (进入队列 )。此时栈 剩:
目标 2:接着出栈
- 必须先将 入栈,再将 入栈。
- 入栈 后,栈 :
- 入栈 后,栈 :
- 出栈 (进入队列 )。此时栈 剩:
目标 3:接着出栈
- 必须先将 入栈,再将 入栈。
- 入栈 后,栈 :
- 入栈 后,栈 : (此时栈中元素最多,共 个)
- 出栈 (进入队列 )。此时栈 剩:
后续出栈(验证):
- 依次出栈 栈 剩:
- 依次出栈 栈 剩:
- 依次出栈 栈 为空。
正确答案:C. 。
3.2 题目二
题目: 双端队列是指在队列的两个端口都可以加入和删除元素,如下图所示。现在要求元素进队列和出队列必须在同一端口,即从 A 端进队的元素必须从 A 端出,从 B 端进队的元素必须从 B 端出。则对于 4 个元素的序列 ,若要求前 2 个元素()从 A 端口按次序全部进入队列,后两个元素()从 B 端口按次序全部进入队列,则不可能得到的出列序列是( A )。
- A.
- B.
- C.
- D.
详细解析:
理解题目规则(等效模型):
- 元素 从 A 端进,也必须从 A 端出 —— 这相当于一个独立的栈 (只能对 进行进栈和出栈操作)。
- 元素 从 B 端进,也必须从 B 端出 —— 这相当于另一个独立的栈 (只能对 进行进栈和出栈操作)。
- 因此,整个结构被拆分成了两个互不干涉的独立栈:栈 **** (管理 ) 和 栈 **** (管理 **** ) 。
分析两个栈的内部出栈规律:
- 对于 栈 (元素 依次入栈):其合法的出栈顺序只能是 ****。
- 对于 栈 (元素 依次入栈):其合法的出栈顺序只能是 ****。
- 核心约束:最终的全局出栈序列,必须是这两个独立子序列交织(归并)的结果,但绝对不能破坏各自内部原有的相对先后顺序(即 必须在 之后出栈, 必须在 之后出栈)。
逐项验证选项:
选项 A:****
- 检查 和 的相对顺序:在序列中 在 前面( 先出栈, 后出栈),这违背了栈 必须先出 再出 的原则。因此该序列不可能得到(正确答案)。
选项 B:****
- 的顺序是 在 前(符合 ); 的顺序是 在 前(符合 )。合法。
选项 C:****
- 的顺序是 在 前(符合 ); 的顺序是 在 前(符合 )。合法。
选项 D:****
- 的相对顺序中 先出; 的相对顺序中 先出。合法。
正确答案:A. 。
