题解 | #用两个栈实现队列#

用两个栈实现队列

http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

使用一个stack会导致入队和出队的位置变换,使用两个stack时就再变一次,就变成了队列。插入时插入到stack2中,出队列时从stack1中出栈,若stack1中没有元素则将stack2中的元素压入到stack1中再继续从stack1中出栈即可。

class Solution
{
public:
    void push(int node) {
        stack2.push(node);
    }

    int pop() {
        if(stack1.empty())
        {
            while(!stack2.empty())
            {
                stack1.push(stack2.top());
                stack2.pop();
            }
        }
        if(!stack1.empty())
        {
            int rst = stack1.top();
            stack1.pop();
            return rst;
        }

        //这里给一个默认值;
        return -1;
    }

private:
    stack<int> stack1;    //出队列;
    stack<int> stack2;    //入队列;
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务