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

答案是:
设2个栈为A,B, 一开始均为空.
入队: 将新元素push入栈A;
出队:
(1)判断栈B是否为空;
(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;
(3)将栈B的栈顶元素POP出

第(1)部 判断栈B是否为空有什么作用 ? 无论栈B是否为空 不都可以执行(2)(3)部么?

这是一道很老的面试题。
http://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html
应该是"判断栈A是否为空",因为开始B是空的,每次出队前后B也必须是空的。如果出队前后B不为空,算法应该是不对的。

判断A为空,表示队列为空,(2)(3)就不执行了。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答