两个栈实现队列

1、题目

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

2、说明

(1)栈用stack表示,两个栈分别是stack1和stack2

(2)入栈 stack.push();出栈 stack.pop()

(3)入队:

  stack1.push()

(4)出队

  出队分为两种情况,

    stack2为空,直接将stack1中的元素pop出来,然后push到stack2中,最后将stack2中的元素pop出来;

    stack2非空,首先将stack2中的元素pop出来,然后再讲stack1中的元素pop出来,将stack1pop出来的元素push到stack2中,最后pop出stack2中的元素。

3、核心代码

class Solution
{
    
//用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
public:
    void push(int node) {
        stack1.push(node);//入栈
    }

    int pop() {
        //两种情况:stack2为空,先从stack1pop出的元素push到stack2,然后stack2 pop;stack2非空,直接pop
        if(stack2.empty())
        {
            while(!stack1.empty())
            {
                stack2.push(stack1.top());
                stack1.pop();
            }
        }        
        int p=stack2.top();
        stack2.pop();
        return p;
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};
原文地址:https://www.cnblogs.com/qianwangxingfu/p/13738538.html