用两个栈实现队列

本文介绍了一种使用两个栈来实现队列的数据结构方法。通过将一个栈中的元素依次压入另一个栈,实现了队列的先进先出特性。具体实现包括Push和Pop操作,适用于int类型元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

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

 

思路

队列是先进先出,栈是先进后出,只要把栈1放到栈2中,那么栈2就是先进先出了。具体可以看我另外一篇博文:

https://blog.csdn.net/songsong2017/article/details/86721095

 

代码

class Solution
{
public:
    void push(int node) {
        stack<int> s;
        while (!myStack.empty()){
            s.emplace(myStack.top());
            myStack.pop();
        }
        myStack.emplace(node);
        while (!s.empty()){
            myStack.emplace(s.top());
            s.pop();
        }
    }

    int pop() {
        int res = myStack.top();
        myStack.pop();
        return res;
    }

private:
    stack<int> myStack;
};