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

本文共 1215 字,大约阅读时间需要 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;};

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

你可能感兴趣的文章
TaskAsyncHelper
查看>>
知之为知之,不知为不知。
查看>>
设计模式6大原则
查看>>
C# WinForm 文件上传下载
查看>>
[转载]日历设计之重复事件规则设计
查看>>
HTTP协议详解(真的很经典)
查看>>
(转)什么是云计算
查看>>
Linux性能监控命令——sar
查看>>
使用Asp.net mvc + Linq + mvc_scaffold_gen_setup.exe 生成一个完整的家庭帐册大管家程序 之二...
查看>>
视差滚动(Parallax Scrolling)效果的原理和实现
查看>>
咏南中间件支持DELPHI低版本开发的两层程序平稳升级到三层
查看>>
带监督的文本分类算法FastText
查看>>
新书推荐:细说PHP(含样章试读)
查看>>
《黑客防线》2010合订本(下半年)
查看>>
intel I7平台Win7 x64 下wpf、silverlight 与aero特效动画缓慢故障排除一则
查看>>
shell常识总结
查看>>
内存池版本1--单线程-固定大小专为某类设计的内存池
查看>>
大道至简,职场上做人做事做管理
查看>>
《C++必知必会》读书笔记2
查看>>
web 学习资源整理
查看>>