用两个栈来实现一个队列,完成队列的Push和Pop操作。
栈的特点:先进后出,后进先出;
队列的特点:先进先出,后进后出。
基本思想:push的时候直接push到stack1;pop的时候将stack1中的元素转移到stack2中,但是注意要剩下最后一个元素(这里是关键),这个元素就是要pop的元素,待pop完成后再将stack2中的元素还给stack1。
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
while(stack1.size() > 1){
stack2.push(stack1.top());
stack1.pop();
}
res = stack1.top();
stack1.pop();
while(!stack2.empty()){
stack1.push(stack2.top());
stack2.pop();
}
return res;
}
private:
int res;
stack<int> stack1;
stack<int> stack2;
};