【题目描述】
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
【解题思路】
思路其实很简单,如下所示:
1、所谓的“一次性倒完”可以通过一直往Stackpop中push元素,直到StackPush栈大小为空时为止来实现。
2、如果StackPop中有数据,则直接弹出栈顶元素并返回即可;
如果StackPop中没有数据,则依次弹出SatckPush中的元素,将其压入StackPop中,直到StackPush栈大小为空。
最后返回弹出的元素即可。
【代码实现】
1 class Solution 2 { 3 public: 4 void push(int node) { 5 stack1.push(node); 6 } 7 8 int pop() { 9 int element=0; 10 if(stack2.empty())// 如果StackPop中没有数据 11 { 12 while(!stack1.empty()) 13 { 14 element=stack1.top(); 15 stack1.pop(); 16 stack2.push(element); 17 } 18 } 19 if(!stack2.empty())//如果StackPop中有数据 20 { 21 element=stack2.top(); 22 stack2.pop(); 23 } 24 return element; 25 } 26 27 private: 28 stack<int> stack1; 29 stack<int> stack2; 30 };