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

剑指offer 用两个栈实现队列

作者: 云胡同学 | 来源:发表于2017-11-12 20:07 被阅读0次

    题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

    思路

    1. push直接将队列中的值放在stack1里,这时候队列中的值在栈中是逆序的。

    2. pop的时候,判断stack2是否为空。

    • 为空,将stack1里的值放在stack2中,直到stack1为空,那么stack2存的就是队列中有顺序的值。

    • 不为空,直接获取stack2栈顶的值,并pop。

    代码

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

    相关文章

      网友评论

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

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