当前位置: 首页 > news >正文

用两个栈实现一个队列

用两个栈实现一个队列

 1 #include<iostream>
 2 #include<stdlib.h>
 3 #include<stack>
 4 using namespace std;
 5 
 6 template <typename T>class CQueue
 7 {
 8 public:
 9     CQueue(void);
10     ~CQueue(void);
11     void appendtail(const T& node);
12     T deleteHead();
13 private:
14     stack<T> stack1;
15     stack<T> stack2;
16 
17 };
18 
19 //构造函数
20 template <typename T> CQueue<T>::CQueue(void)
21 {
22 }
23 
24 //析构函数
25 template <typename T> CQueue<T>::~CQueue(void)
26 {
27 }
28 
29 //插入元素
30 template <typename T> void CQueue<T>::appendtail(const T& node)
31 {
32     stack1.push(node);
33 }
34 
35 //删除元素并返回
36 template <typename T> T CQueue<T>::deleteHead()
37 {
38     if(stack2.size()<=0)
39     {
40         while(stack1.size()>0)
41         {
42             stack2.push(stack1.top());
43             stack1.pop();
44         }
45     }
46     if(stack2.size()==0)
47         throw new exception("队列为空");
48     T head=stack2.top();
49     stack2.pop();
50     return head;
51 }
52 
53 void main()
54 {
55     CQueue<int> queue;
56     queue.appendtail(1);
57     queue.appendtail(2);
58     queue.appendtail(3);
59     queue.appendtail(4);
60     int len=4;
61     while(len>0)
62     {
63         cout<<queue.deleteHead()<<endl;
64         --len;
65     }
66     system("pause");
67 }

 

转载于:https://www.cnblogs.com/wxdjss/p/5450969.html

相关文章:

  • 将C#文档注释生成.chm帮助文档
  • 【VS开发】CListCtrl控件使用方法总结
  • python之路之正则表达式
  • 水平方向瀑布流
  • log4j配置概要
  • [Assignment] C++1
  • linux之GDB常用命令汇总
  • uva1368DNA consensus string统计
  • static关键字的使用总结
  • 设计模式学习-原型模式
  • Centos 基础开发环境搭建之Maven私服nexus
  • HDU 2098 分拆素数和
  • 设计模式——9.装饰模式
  • unable to start the virtual device;Genymotion启动安卓模拟器出错
  • MapReduce编程job概念原理
  • 【node学习】协程
  • crontab执行失败的多种原因
  • JSDuck 与 AngularJS 融合技巧
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • nodejs实现webservice问题总结
  • ReactNativeweexDeviceOne对比
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 从setTimeout-setInterval看JS线程
  • 好的网址,关于.net 4.0 ,vs 2010
  • 检测对象或数组
  • 简析gRPC client 连接管理
  • 前端性能优化——回流与重绘
  • 消息队列系列二(IOT中消息队列的应用)
  • 小程序01:wepy框架整合iview webapp UI
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • raise 与 raise ... from 的区别
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • #Linux(make工具和makefile文件以及makefile语法)
  • #stm32驱动外设模块总结w5500模块
  • #每天一道面试题# 什么是MySQL的回表查询
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (C语言)字符分类函数
  • (day6) 319. 灯泡开关
  • (理论篇)httpmoudle和httphandler一览
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (原)Matlab的svmtrain和svmclassify
  • (转)jQuery 基础
  • (转)用.Net的File控件上传文件的解决方案
  • (轉)JSON.stringify 语法实例讲解
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .net CHARTING图表控件下载地址
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET是什么
  • @DataRedisTest测试redis从未如此丝滑
  • @hook扩展分析
  • @SentinelResource详解
  • [ JavaScript ] JSON方法
  • [20150707]外部表与rowid.txt