一、题目
二、思路与代码
栈是先进后出,队列是先进先出,也就是说从push角度来说二者顺序相同,而从pop的角度来说二者顺序正好是相反的,那我们就可以一个栈中push,一个栈中pop。在一个stack1中进行push,然后每当需要pop的时候就将stack1中的元素依次取出放到stack2中,那么正好stack2的顺序就与队列相同了,从stack2取出栈顶元素,取完以后再把元素都放回stack1。
class Solution
{
public:
//push: push到stack1
//pop: 将stack1中的内容全部push到stack2,再从stack2中pop,pop完再把元素都放回去
void push(int node) {
stack1.push(node);
}
int pop() {
int a;
while(stack1.size()){
a=stack1.top();
stack2.push(a);
stack1.pop();
}
int b=stack2.top();
stack2.pop();
while(stack2.size()){
a=stack2.top();
stack1.push(a);
stack2.pop();
}
return b;
}
private:
stack<int> stack1;
stack<int> stack2;
};