用两个栈实现队列

我的方法:

class Solution
{
public:
void push(int node) {
while(!stack2.empty())
{
stack1.push(stack2.top());
stack2.pop();
}
stack1.push(node);

}

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

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

改进了一些:

class Solution
{
public:
    void push(int node) {
        
        stack1.push(node);
    }
    int pop() {
        int res;
        if(!stack2.empty())
        {
            res = stack2.top();
            stack2.pop();
            return res;
        }
        else
        {
            while(!stack1.empty())
            {
                stack2.push(stack1.top());
                stack1.pop();
            }
            res = stack2.top();
            stack2.pop();
            return res;
        }
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};
原文地址:https://www.cnblogs.com/Lune-Qiu/p/8529266.html