LeetCode_225-Implement Stack using Queues

使用队列实现栈的操作

class MyStack {
public:
    /** Initialize your data structure here. */
    MyStack() {
        
    }
    
    /** Push element x onto stack. */
    void push(int x) {
        if(!queueA.empty()) {
            queueA.push(x);
        }
        else {
            queueB.push(x);
        }
    }
    
    /** Removes the element on top of the stack and returns that element. */
    int pop() {
        int nTmp = 0;
        if(queueA.empty()) {
            while(queueB.size() > 1) {
                queueA.push(queueB.front());
                queueB.pop();
            }
            nTmp = queueB.front();
            queueB.pop();
        }
        else {
            while(queueA.size() > 1) {
                queueB.push(queueA.front());
                queueA.pop();
            }
            nTmp = queueA.front();
            queueA.pop();
        }
        return nTmp;
    }
    
    /** Get the top element. */
    int top() {
        int nTmp = 0;
        if(queueA.empty()) {
            while(!queueB.empty()) {
                nTmp = queueB.front();
                queueA.push(queueB.front());
                queueB.pop();
            }
        }
        else {
            while(!queueA.empty()) {
                nTmp = queueA.front();
                queueB.push(queueA.front());
                queueA.pop();
            }
        }
        
        return nTmp;
    }
    
    /** Returns whether the stack is empty. */
    bool empty() {
        if(queueA.empty() && queueB.empty()) {
            return true;
        }
        return false;
    }

protected:
    queue<int> queueA;
    queue<int> queueB;
};

可关注公众号了解更多的面试技巧

posted @ 2019-10-16 11:17  yew0  阅读(84)  评论(0编辑  收藏  举报