C++ 使用2个栈实现队列

// 使用2个栈实现队列,栈是一种先进后出的结构,队列是一种先进先出的结构;

// 可以利用栈的特点,使用2个栈,在入栈时将数据加入栈1;在出栈时,判断栈2是否为空

// 如果为空,则先将栈1中的元素弹出,压入栈2,然后从栈2弹栈。

#include<iostream>

#include<stack>

using namespace std;

template <typename T>

class MyQueue  {

public:

        T Pop ()

        {

                if (m_stack2.empty()) {

                        while (!m_stack1.empty()) {

                                        T elem = m_stack1.top();

                                        m_stack1.pop();

                                        m_stack2.push(elem);

                                }

                    }

                if (m_stack2.empty()) {

                        throw "queue is null ";

                }

                T elem = m_stack2.top();

                m_stack2.pop();

                return elem;

        }

        void Push (const T& element)

        {

                m_stack1.push(element);

        }

private:

        stack<T> m_stack1;

        stack<T> m_stack2;

};

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值