博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
013实现使用两个堆栈队列(keep it up)
阅读量:5233 次
发布时间:2019-06-14

本文共 1264 字,大约阅读时间需要 4 分钟。

实现使用两个堆栈队列
FIFO队列是一种数据结构(FIFO),后堆叠前进出的数据结构的(FILO)。 
两个栈实现的最简单的方法就是排队:队列中的第一个推栈, 
队列将数据顺序的第一个堆栈推入第二堆叠,然后叠加.
两个规则:
1)进队列,则直接压入第一个栈
2)出队列,若果第二个栈不为空。直接pop(),如过第二个栈为空,

则把第一个栈中的数据所有压入第二个栈(第一个栈此时为空)。

实际写代码时注意栈为空的情况。

代码:

#include 
#include
class Queue{public: Queue() {} ~Queue() {} void push(int vData) { m_First.push(vData); } void pop() { if (m_Second.empty()) { if (m_First.empty()) { std::cout << "the queue is empty" << std::endl; return ; } move(m_First, m_Second); m_Second.pop(); } } int top() { if (m_Second.empty()) { if (m_First.empty()) { std::cout << "the queue is empty" << std::endl; return ; } move(m_First, m_Second); } return m_Second.top(); } int back() { if (m_First.empty()) { if (m_Second.empty()) { std::cout << "the queue is empty" << std::endl; return ; } move(m_Second, m_First); } return m_First.top(); }private: void move(std::stack
& vL, std::stack
& vR) { while (!vL.empty()) { vR.push(vL.top()); vL.pop(); } }private: std::stack
m_First; std::stack
m_Second;};

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/yxwkf/p/4725480.html

你可能感兴趣的文章
丸内の霊 補充2
查看>>
MVC(Model(模型) View(视图) Controller(控制器))
查看>>
redux&&createStore
查看>>
路飞学城去支付相关
查看>>
Perl 端口扫描入库的问题
查看>>
30 包含min函数的栈(举例让抽象问题具体化)
查看>>
状态压缩 HDU 3182
查看>>
为Xamarin更好的开发而改写的库
查看>>
HDU1272--小希的迷宫
查看>>
Event对象的事件句柄
查看>>
POJ 2367 Genealogical tree
查看>>
boost::asio async_write也不能保证一次发完所有数据 一
查看>>
CPython对象模型:Dict
查看>>
从客户端检测到有潜在危险的Request.Form值
查看>>
Bootstrap3 Grid system原理及应用
查看>>
angular项目中使用Primeng
查看>>
Redis教程(十四):内存优化介绍
查看>>
mysql performance schema的即时诊断工具-邱伟胜
查看>>
MYSQL 官方MYSQL源码文档介绍
查看>>
Log日志系统
查看>>