入栈和出栈,都在 queue1 中完成,而 queue2 作为中转空间。
- 入栈:直接入 queue1 即可。
- 出栈:把 queue1 中除最后一个元素外的所有元素都移动到 queue2 中,再将 queue1 中的元素出队,此时即出栈;接着将 queue2 中的所有元素移动到 queue1 中。
c++实现
class Solution
{
public:
void push(int element) {
queue1.push(element);
}
int pop() {
while(queue1.size() > 1){
queue2.push(queue1.front());
queue1.pop();
}
int temp = queue1.front();
queue1.pop();
while(!queue2.empty()){
queue1.push(queue2.front());
queue2.pop();
}
return temp;
}
int top() {
return queue1.back();
}
bool empty() {
return queue1.empty() && queue2.empty();
}
private:
queue<int> queue1;
queue<int> queue2;
};