用两个队列实现栈(C++模板)
来源:互联网 发布:有源码怎么做辅助 编辑:程序博客网 时间:2024/05/22 14:12
这个可以和上一篇文章<<用两个栈实现队列>>对比着来学习。算法思想很简单,直接上代码吧:
#include<iostream>#include<queue>using namespace std;template<typename T> class CStack{private: queue<T> q1; queue<T> q2; int nCount;public: CStack(); ~CStack(); void appendTail(const T& data); T deleteTail(); int GetNum() const;};template<typename T> CStack<T>::CStack(){ nCount=0;}template<typename T> CStack<T>::~CStack(){}template<typename T> void CStack<T>::appendTail(const T& data){ if(q1.size()==0 && q2.size()==0) { q1.push(data); } else if(q1.size()>0) { q1.push(data); } else if(q2.size()>0) { q2.push(data); } ++nCount;}template<typename T> T CStack<T>::deleteTail(){ T element; if(q2.size()==0) { while(q1.size()!=1) { T& data=q1.front(); q1.pop(); q2.push(data); } element=q1.front(); q1.pop(); cout<<element<<endl; } else{ while(q2.size()!=1) { T& data=q2.front(); q2.pop(); q1.push(data); } element=q2.front(); q2.pop(); cout<<element<<endl; } --nCount; return element;}int main(){ CStack<int> stack1; stack1.appendTail(1); stack1.appendTail(2); stack1.appendTail(3); int DATA=stack1.deleteTail(); stack1.appendTail(4); DATA=stack1.deleteTail(); DATA=stack1.deleteTail(); DATA=stack1.deleteTail(); system("pause"); return 0;}
阅读全文
0 0
- 用两个栈实现队列(C++模板)
- 用两个队列实现栈(C++模板)
- 两个栈实现一个队列(C/C++)
- 剑指offer题解C++【5】用两个栈实现队列
- C++:利用两个栈实现队列操作
- 【C++】两个队列实现一个栈
- 【C++】两个栈实现一个队列
- 用两个栈实现队列 & 用两个队列实现栈
- 用两个队列实现栈&用两个栈实现队列
- 用两个栈实现队列 & 两个队列实现一个栈
- 两个栈实现队列&&用两个队列实现一个栈
- 用两个栈实现队列 & 两个队列实现栈
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个队列实现栈
- 用两个栈实现队列
- 用两个栈实现队列
- 机器语言(即01010),你真的理解吗?
- 高效开发者之思维模式
- Matlab一个错误引发的血案:??? Error using ==> str2num Requires string or character array input
- OC内存管理教程之ARC(三)——与@property的羁绊
- 深入解析指针数组和数组指针
- 用两个队列实现栈(C++模板)
- spring MVC 文件上传下载的实现
- Java并发编程实战2-线程安全
- Microsoft牛津计划——文本分析
- httpUtils
- ASP.NET Core MVC 配置全局路由前缀
- 使用java技术将数据导出到excel中
- ASP.NET Core MVC 中的 [Controller] 和 [NonController]
- Hadoop Journal Node 作用