class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int tmp;
if(stack2.empty())
{
while(!stack1.empty())
{
tmp = stack1.top();
stack2.push(tmp);
stack1.pop();
}
}
tmp = stack2.top();
stack2.pop();
return tmp;
}
private:
stack<int> stack1;
stack<int> stack2;
};
思路:用两个栈实现队列是非常典型的面试问题,想要写出这道题,只要想明白栈和队列的联系和区别就好了。栈最大的特点是先进后出,而队列的特点是先进先出。想要shi'实现先出这个问题,只要把第一个栈里面先进去的那个数放在栈顶就好了,所以就用到了第二个栈,把第一个里面栈的元素再拿出来放在第二个栈里面就好了。
即:把数字放在栈1里面,然后把所有栈1的元素放在栈2里面,再把数从栈2里面拿出来,就可以实现先进先出的队列了。