5用两个栈实现队列
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:一个栈只负责压入元素,另一个栈在不为空的情况下弹栈,为空的时候先将Stack1全部压栈,再弹出结果。
class Solution { public: void push(int node) { stack1.push(node); } int pop() { if(stack2.size() == 0){ while(!stack1.empty()){//先压栈,再弹出结果,不要忘记弹出结果 stack2.push(stack1.top()); stack1.pop(); } int tmp = stack2.top(); stack2.pop(); return tmp; } else{ int tmp = stack2.top(); stack2.pop(); return tmp; } return -1; } private: stack<int> stack1;//push stack<int> stack2;//不空就pop,空就将1全部压入 };