美文网首页
225. Implement Stack using Queue

225. Implement Stack using Queue

作者: YellowLayne | 来源:发表于2017-10-26 14:32 被阅读0次

    1.描述

    Implement the following operations of a stack using queues.

    push(x) -- Push element x onto stack.
    pop() -- Removes the element on top of the stack.
    top() -- Get the top element.
    empty() -- Return whether the stack is empty.
    Notes:
    You must use only standard operations of a queue -- which means only push to back, peek/pop from front, size, and is empty operations are valid.
    Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
    You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

    2.分析

    3.代码

    class MyStack {
    public:
        /** Initialize your data structure here. */
        MyStack() {
            
        }
        
        /** Push element x onto stack. */
        void push(int x) {
            q1.push(x);
        }
        
        /** Removes the element on top of the stack and returns that element. */
        int pop() {
            if (empty()) exit(-1);
            int ans;
            if (!q1.empty()) {
                ans = q1.back();
                while (q1.size() > 1) {
                    q2.push(q1.front());
                    q1.pop();
                }
                q1.pop();            
            } else {
                ans = q2.back();
                while (q2.size() > 1) {
                    q1.push(q2.front());
                    q2.pop();
                }
                q2.pop();
            }
            return ans;
        }
        
        /** Get the top element. */
        int top() {
            if (empty()) exit(-1);
            if (q1.size() >= 1)
                return q1.back();
            else if (q2.size() >= 1)
                return q2.back();
        }
        
        /** Returns whether the stack is empty. */
        bool empty() {
            return q1.empty() && q2.empty();
        }
    private:
        queue<int> q1, q2;
    };
    
    /**
     * Your MyStack object will be instantiated and called as such:
     * MyStack obj = new MyStack();
     * obj.push(x);
     * int param_2 = obj.pop();
     * int param_3 = obj.top();
     * bool param_4 = obj.empty();
     */
    

    相关文章

      网友评论

          本文标题:225. Implement Stack using Queue

          本文链接:https://www.haomeiwen.com/subject/kmevjxtx.html