设栈 S和队列Q的初始状态为空,元素 a b c d e f g依次进栈 S .若每个元素出栈后立即进入队列Q,且7个元素出队的顺序为b d c f e a g则栈 S的容量至少多少?
分析:
栈是先进后出,队列是先进先出;题目中指定了进栈顺序,但没说要连续进栈.(下面箭头图中右代表栈底,左代表栈顶,队列同样)
假如栈的容量是1,则第一个出栈的肯定是a,不符合;
假如栈的容量是2,则a、b进去,b出栈,c进栈,只能c先出栈,d不可能出队顺序在c前
假如栈的容量是3,分析过程如下:
①S:b→a,b出栈,Q:b,S:a
②S:d→c→a,d、c依次出栈,Q:c→d→b,S:a
③S:f→e→a,f、e、a依次出栈,Q:a→e→f→c→d→b,S:null
④S:g,g出栈,Q:g→a→e→f→c→d→b,S:null
Q中元素依次出队,即b→d→c→f→e→a→g
因此,答案是栈S的容量至少是 3