题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路
用一个栈stack1来存储数据,用另一个栈stack2来调顺序。push数据node时,先将stack1中原有的数据push到stack2中,再将nodePush到stack2中,然后再将stack2中的数据依次push到stack1中。Pop队首时,将stack1栈顶的数据pop即可。
代码
c++实现
class Solution
{
public:
void push(int node) {
int n=stack1.size();
for(int i=0;i<n;i++){
stack2.push(stack1.top());
stack1.pop();
}
stack2.push(node);
for(int i=0;i<n+1;i++){
stack1.push(stack2.top());
stack2.pop();
}
}
int pop() {
int re=stack1.top();
stack1.pop();
return re;
}
private:
stack<int> stack1;
stack<int> stack2;
};