入栈和出栈,都在 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;
};