https://leetcode.cn/problems/implement-stack-using-queues/description/

<aside> 💡

思路:队列两个口能连通形成循环,

class MyStack {
public:
    MyStack(): sz(0) {
    }

    void push(int x) {
        // 队尾模拟栈头
        que.push(x);
        ++sz;
    }

    int pop() {
        int tmp = 0;
        // 不断将队头元素移到队尾,直到最开始的队尾到达队头
        for (int i = 0; i < sz - 1; ++i) {
            tmp = que.front();
            que.pop();
            que.push(tmp);
        }
        tmp = que.front();
        que.pop();
        --sz;
        return tmp;
    }

    int top() {
        return que.back();
    }

    bool empty() {
        return que.empty();
    }

private:
    queue<int> que;
    int sz;
};