常规解法:
两个栈A和B,模拟队列,入队、出队操作
入队时,将元素压入A,
出队时,将A中元素逐个弹出并压入B,将B的栈顶元素弹出作为出队元素,之后将B中剩下的元素逐个弹出并压入A。
一种小改进:
入队时,先判断A是否为空,如果不为空,说明元素都在A,此时将入队元素直接进栈到A;如果为空,将B中元素弹出并进栈到A,然后在压入元素;
出队时,先判断B是否为空,如果不为空,直接弹出B栈栈顶元素;如果为空,将A元素弹出并进栈B,然后把最后一个元素弹出,出队。
另一种小改进:
入队时,将元素压入栈A。
出队时,判断B是否为空,如果不为空,则直接弹出栈顶元素;如果为空,则将A的元素这个弹出并进栈到B,把最后一个元素弹出并出队。
避免了反复倒栈,仅在需要时倒一次。
P.S.其他的还需要考虑一下没有元素可供出队时的处理。