用两个栈实现一个队列的功能?要求给出算法和思路!

 

用两个栈实现一个队列的功能?要求给出算法和思路!

堆栈的特征:FILO 先进后出
队列的特征:FIFO 先进先出

所以,用两个栈s1和s2模拟一个队列时,s1作输入栈,逐个元素压栈,以此模拟队列元素的入队。

当需要出队时,将栈s1退栈并逐个压入栈s2中,s1中最先入栈的元素,在s2中处于栈顶。

s2退栈,相当于队列的出队,实现了先进先出。

显然,只有栈s2为空且s1也为空,才算是队列空。
[算法讨论]算法中假定栈s1和栈s2容量相同。出队从栈s2出,当s2为空时,若s1不空,则将s1倒入s2再出…

 

你可能感兴趣的:(算法)