题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
C++
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int t;
if(stack2.empty()){
while(!stack1.empty()){
t = stack1.top();
stack1.pop();
stack2.push(t);
}
}
t = stack2.top();
stack2.pop();
return t;
}
private:
stack<int> stack1;
stack<int> stack2;
};
思路: 两个栈一个栈用来进队,另一个栈用来出队
栈1用来进队,栈2用来出队,
进队函数只要栈没满就一直进栈;
出队函数需要先判断栈2是否为空,栈2不为空则先保存要出栈函数值,然后出栈;若栈2为空,则把栈1元素依次出栈然后进栈到栈2
扩展:
两个队列实现栈
进栈: 元素进入队列A
出栈:若队列A元素为一则出队,否则队列A除最后一个元素外全部出队,然后按顺序进队到队列B,队列A出队,队列B元素全部出队,按顺序进队到队列A