题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
队列是先进先出,而栈是后进先出,因此pop操作有所不同。在pop时,应该把栈1中的元素都压入栈2,此时栈2的顶部就是队列应该pop的元素,然后把栈1恢复原状,即,将栈2的元素再压回至栈1。push操作并无不同。
c++代码如下:
1 class Solution 2 { 3 public: 4 void push(int node) { 5 stack1.push(node); 6 } 7 8 int pop() { 9 while(stack1.size()){ 10 stack2.push(stack1.top()); 11 stack1.pop(); 12 } 13 int node = stack2.top(); 14 stack2.pop(); 15 while(stack2.size()){ 16 stack1.push(stack2.top()); 17 stack2.pop(); 18 } 19 return node; 20 } 21 22 private: 23 stack<int> stack1; 24 stack<int> stack2; 25 };