用有限个栈实现一个队列,保证每个队列操作(在最坏情况下)都只需要常数次栈操作

class Queue { Stack a, b;public: void push(T item) { a.push(T item); } T pop() { if (!b.empty()) { return b.pop(); } while (!a.empty()) { b.push(a.pop()); } return b.pop(); }};每个元素进栈出栈2次,均摊 【用有限个栈实现一个队列,保证每个队列操作(在最坏情况下)都只需要常数次栈操作】 用有限个栈实现一个队列,保证每个队列操作(在最坏情况下)都只需要常数次栈操作

■网友
How to implement a queue with three stacks?以上搬运stackOverflow的答案。
用两个stack来倒来倒去的方法不对。


    推荐阅读