【基础操作】两个栈实现队列

Posted on 2018-02-03 15:41  Unkn0wnnnnn  阅读(133)  评论(0)    收藏  举报

其实两个栈实现队列很简单,入栈和入队列的性质都是一样的,将元素存储起来,重点是出栈和出队列的形式是完全不同的,也就是FIFO和LILO的区别,整体思路很简单,出队列无非就是入a栈再出a栈,再进入b栈,再出b栈,这样我们就完成了一次出队列的操作。具体实现源码如下:

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

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

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