,c语言,栈队列问题,为什么要两个栈,分别是干什么用的

如题所述

想象空中有两个水杯,水杯的口对着另一个水杯的口。【】 用左边的这个中括号组成的图形形容下吧,左括号是个水杯,即栈,右括号也是个水杯,也是栈。如果你想要提取队列中间的元素,是不是可以把队列中间这个元素到队首之间的所有元素压入左栈中,而把队列中间这个元素到队尾之间的所有元素压入右栈中,提取了这个元素后,再把右栈中元素压到左栈恢复成和原先顺序不变的队列呢,想想是不是很方便。~\(≧▽≦)/~
其实这个也linux shell中,通过上下按键便能调出最近的命令使用记录一样的原理
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-09
就是双栈可以实现一个队列。
你要进队列的时候,就进栈1,然后要出队列的时候,如果栈2为空,就把栈1的元素都出栈然后进入栈2,否则从栈2弹栈就可以了。
这样做是正确的。因为数进入栈1后,出栈是按照相反的顺序出栈的。但是进入栈2再出栈之后顺序再反一次,就正过来了。而栈1的元素每次导入栈2都是栈1排空,栈2在没有元素的过程中进行的,因此不会出现相互影响的问题,最后每次出栈的顺序都和入栈一样,就实现了一个队列的功能。本回答被网友采纳
第2个回答  2013-12-09
调整进出顺序
相似回答