美文网首页
剑指Offer—用两个栈实现队列

剑指Offer—用两个栈实现队列

作者: 鬼谷神奇 | 来源:发表于2016-05-03 22:03 被阅读260次

    题目链接:用两个栈实现队列
    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
    注意:不必每次都交换两个栈中的元素

    class Solution
    {
    public:
        void push(int node) {
            if(stack1.empty()){
                if(stack2.empty()){
                    stack1.push(node);
                }else{
                    while(!stack2.empty()){
                        int tmp = stack2.top();
                        stack2.pop();
                        stack1.push(tmp);
                    }
                    stack1.push(node);
                }
                    
            }else{
                stack1.push(node);
            }
            
        }
    
        int pop() {
            if(!stack1.empty()){
                if(!stack2.empty()){
                    int tmp = stack2.top();
                    stack2.pop();
                    return tmp;
                }else{
                    while(!stack1.empty()){
                        int tmp = stack1.top();
                        stack1.pop();
                        stack2.push(tmp);
                    }
                    int tmp = stack2.top();
                    stack2.pop();
                    return tmp;
                }
            }else{
                int tmp = stack2.top();
                stack2.pop();
                return tmp;
            }
                
            
        }
    
    private:
        stack<int> stack1;
        stack<int> stack2;
    };
    

    相关文章

      网友评论

          本文标题:剑指Offer—用两个栈实现队列

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