题目

图片说明

分析

栈:先进后出
图片说明
队列: 先进先出,
图片说明

那么两个栈刚好可以满足队列的性质
需要注意的是,要想实现我们的想法,必须使得栈2是空的,如果栈2不为空,我们先要将栈2元素出栈,再来执行上面的操作

c++代码

class Solution
{
public:


    //用栈1之执行入队操作
    void push(int node) {

        stack1.push(node);
    }

    int pop() {

        int r = 0; //定义一个变量用于接收最终栈2的出栈元素,也就是队列的出队元素

        //首先判断当栈2 不为空的时候
        if(!stack2.empty())
        {
            //直接将栈2的元素出栈
            r = stack2.top();
            stack2.pop();
        }
        else
        {
            //如果栈2 为空,而且栈1不为空
             while(!stack1.empty())
            {
                 //将栈1的元素压入栈2中
                stack2.push(stack1.top());
                stack1.pop();
            }
            //最终栈2栈顶元素出栈
            r = stack2.top();
            stack2.pop();
        }

        //返回栈2的栈顶元素即可(就是队列元素出队的情况)
            return r;
        } 
private:
    stack<int> stack1;
    stack<int> stack2;
};

图片说明