题解 | #用两个栈实现队列#
用两个栈实现队列
http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6
实现的很垃圾,在注释中介绍了
class Solution { public: void push(int node) { // 我把stack1作为队列尾,所有输入的值都压入stack1 stack1.push(node); } // 把stack2作为弹出的栈,当我把stack1中的值压入stack2时,元素再从stack2中弹出时,输出的元素的顺序恰好符合队列 int pop() { // 如果两个栈都是空,这个函数应该报错 if (stack1.empty() && stack2.empty()) { return -1; } // 如果第二个是空的话,就把第一个中的所有元素压入 if (stack2.empty()) { while (!stack1.empty()) { stack2.push(stack1.top()); stack1.pop(); } } // 只要第二个有元素,直接弹出就可以了 int tmp = stack2.top(); stack2.pop(); return tmp; } private: stack<int> stack1; stack<int> stack2; };