题目
2 设栈 S 和队列 Q 的初始状态均为空,元素 a,b,c,d,e,f,g依次进入栈 S。若每个元素出栈后立即进入队列 Q,且 7 个元素出队的顺序是 b,d,c,f,e,a,g,则栈 S 的容量至少是()。A. 1B. 2C. 3D. 4
2 设栈 S 和队列 Q 的初始状态均为空,元素 a,b,c,d,e,f,g依次进入栈 S。若每个元素出栈后立即进入队列 Q,且 7 个元素出队的顺序是 b,d,c,f,e,a,g,则栈 S 的容量至少是()。
A. 1
B. 2
C. 3
D. 4
题目解答
答案
C. 3
解析
考查要点:本题主要考查栈和队列的操作特性,以及如何根据元素的入栈顺序和出队顺序推断栈的最小容量。关键在于理解栈的先进后出和队列的先进先出特性,并通过模拟操作过程确定栈的最大元素数量。
解题核心思路:
- 元素入栈顺序为a→b→c→d→e→f→g,出栈后立即进入队列。
- 队列出队顺序为b→d→c→f→e→a→g,需反推出栈顺序。
- 栈的最大容量对应操作过程中栈中元素的最大数量。
破题关键点:
- 出栈顺序必须与队列入队顺序一致,即出栈顺序为b→d→c→f→e→a→g。
- 通过模拟元素入栈、出栈和队列入队的过程,记录栈中元素数量的变化,找出最大值。
模拟操作过程
- 元素a入栈,栈:[a]。
- 元素b入栈,栈:[a, b]。
- 弹出b,栈变为[a],队列入队b。此时队列出队顺序第一个为b。
- 元素c入栈,栈:[a, c]。
- 元素d入栈,栈:[a, c, d](栈容量达到3)。
- 弹出d,栈变为[a, c],队列入队d。队列出队顺序第二个为d。
- 弹出c,栈变为[a],队列入队c。队列出队顺序第三个为c。
- 元素e入栈,栈:[a, e]。
- 元素f入栈,栈:[a, e, f](栈容量再次达到3)。
- 弹出f,栈变为[a, e],队列入队f。队列出队顺序第四个为f。
- 弹出e,栈变为[a],队列入队e。队列出队顺序第五个为e。
- 弹出a,栈为空,队列入队a。队列出队顺序第六个为a。
- 元素g入栈,栈:[g]。
- 弹出g,栈为空,队列入队g。队列出队顺序第七个为g。
结论
在整个过程中,栈的最大容量为3,对应选项C。