一、题目
二、思路与代码
栈是先进后出,队列是先进先出,也就是说从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;
};