即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

剑指offer-用两个栈实现一个队列

编程语言 xs_520 18℃ 0评论

栈是先进后出,队列是先进先出


实现:


1.实现push:将元素都push到一个栈中。


2.当是stack1不为空时,将stack1取它的top元素push到stack2中,相对与入stack1的顺序相反,在stack2中pop的时候,就达到的在stack1先进在stack2先出。如果stack2不为空,pop的时候直接取stack2的栈顶元素pop.stack2为空时,先将stack1的元素压栈(stack2).

class Solution
{
public:
    void push(int node) {

        stack1.push(node);
    }

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

private:
    stack<int> stack1;
    stack<int> stack2;
};

转载请注明:CodingBlog » 剑指offer-用两个栈实现一个队列

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情