2023.6.19

这题使用队列来实现栈的功能,和栈实现队列稍有不同。pop操作的实现 需要将队列1的除队尾元素之外的所有元素移到队列2中,然后返回并移除队列1剩下的元素。
下面上代码:
class MyStack {
    queue<int> que1;
    queue<int> que2;
public:
    MyStack() {}
    
    void push(int x) {
        que1.push(x);
    }
    
    int pop() {
        int size = que1.size()-1;
        while(size)
        {
            que2.push(que1.front());
            que1.pop();
            size--;
        }
        int result = que1.front();
        que1.pop();
        que1 = que2;
        while(!que2.empty()) que2.pop();
        return result;
    }
    
    int top() {
        // int size = que1.size()-1;
        // while(size)
        // {
        //     que2.push(que1.front());
        //     que1.pop();
        //     size--;
        // }
        // int result = que1.front();
        // que2.push(que1.front());
        // que1 = que2;
        // while(!que2.empty()) que2.pop();
        // return result;
        return que1.back();
    }
    
    bool empty() {
        return que1.empty();
    }
};ps:实现top操作时,可以直接使用队列的内置方法back直接查看队尾的元素。



















