题目
设栈S和队列Q的初始状态[1]为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是( )。A. 2B. 3C. 4D. 6
设栈S和队列Q的初始状态[1]为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是( )。
A. 2
B. 3
C. 4
D. 6
题目解答
答案
B. 3
解析
考查要点:本题主要考查栈和队列的操作特性,以及如何通过元素的入栈、出栈顺序推断栈的最小容量。
解题核心思路:
- 队列的先进先出特性决定了元素出队顺序必须与其进入队列的顺序一致。
- 栈的先进后出特性要求元素出栈顺序与入栈顺序相反,但可以通过控制入栈和出栈的时机调整出栈顺序。
- 关键矛盾点:元素必须按e1~e6顺序入栈,但出队顺序为e2、e4、e3、e6、e5、e1。需通过模拟操作,找到栈在处理过程中必须达到的最大深度,即最小容量。
破题关键:
- 通过逆向分析出队顺序,确定元素出栈的时机,进而推断栈的最大存储需求。
模拟操作过程
- e1入栈:栈为[e1],此时无法出栈(否则队列首元素为e1,与题目矛盾)。
- e2入栈:栈为[e1, e2],此时出栈e2,队列首元素为e2。
- e3入栈:栈为[e1, e3],此时无法出栈(否则队列次元素为e3,但题目要求次元素为e4)。
- e4入栈:栈为[e1, e3, e4](栈容量需≥3),此时出栈e4,队列次元素为e4。
- 出栈e3:队列第三元素为e3,栈剩余[e1]。
- e5入栈:栈为[e1, e5],此时无法出栈(否则队列第四元素为e5,但题目要求为e6)。
- e6入栈:栈为[e1, e5, e6](栈容量需≥3),此时出栈e6,队列第四元素为e6。
- 出栈e5:队列第五元素为e5,栈剩余[e1]。
- 出栈e1:队列末元素为e1,完成所有操作。
关键结论
- 栈的最大深度出现在步骤4,此时栈中存储e1、e3、e4,共3个元素。
- 因此,栈的最小容量为3。