使用一个stack会导致入队和出队的位置变换,使用两个stack时就再变一次,就变成了队列。插入时插入到stack2中,出队列时从stack1中出栈,若stack1中没有元素则将stack2中的元素压入到stack1中再继续从stack1中出栈即可。
class Solution { public: void push(int node) { stack2.push(node); } int pop() { if(stack1.empty()) { while(!stack2.empty()) { stack1.push(stack2.top()); stack2.pop(); } } if(!stack1.empty()) { int rst = stack1.top(); stack1.pop(); return rst; } //这里给一个默认值; return -1; } private: stack<int> stack1; //出队列; stack<int> stack2; //入队列; };