两个桟实现队列
2015-08-21 15:33
267 查看
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。#include <iostream> #include <stack> using namespace std; template<typename T> class CQueue { public: CQueue(void); ~CQueue(void); void appendTail(const T &node); T deleteHead(); private: stack<T> s1; stack<T> s2; }; template <typename T> CQueue<T>::CQueue(void) { } template <typename T> CQueue<T>::~CQueue(void) { } template <typename T> void CQueue<T>::appendTail(const T& node) { s1.push(node); } template<typename T> T CQueue<T>::deleteHead() { if(s2.size()<=0) { while(s1.size()>0) { T node = s1.top(); s1.pop(); s2.push(node); } } if(s2.size() == 0) { throw exception("invalid input"); } T head = s2.top(); s2.pop(); return head; }
void Test(char actual, char expected) { if(actual == expected) printf("Test passed.\n"); else printf("Test failed.\n"); } int main(int argc, char* argv[]) { CQueue<char> queue; queue.appendTail('a'); queue.appendTail('b'); queue.appendTail('c'); char head = queue.deleteHead(); Test(head, 'a'); head = queue.deleteHead(); Test(head, 'b'); queue.appendTail('d'); head = queue.deleteHead(); Test(head, 'c'); queue.appendTail('e'); head = queue.deleteHead(); Test(head, 'd'); head = queue.deleteHead(); Test(head, 'e'); return 0; }
相关文章推荐
- js到服务器端的URL中文乱码问题
- [CMD] chkdsk
- [php] smarty模板引擎
- 快速切换天财商龙门店后台.VB6.0
- servlet面试时遇到问题和Eclipse中servlet显示无法导入javax.servlet包问题的解决方案
- Oracle GoldenGate 一、介绍和安装
- php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28
- 转帖:需要了解的几个开源协议
- 获取ViewPager当前展示的Fragment
- 【数据结构与算法】——排序算法篇
- IOS学习开发笔记(四)-----通过UIScrollView认识代理
- U-boot-2014.04移植到MINI2440(3) Makefile分析
- DOM事件
- CentOS 6.5 Git源码安装
- FastReport中TotalPages显示为0
- InstallAnywhere 的一些坑以及workaround
- 在xcode 6.4 中使用swift和object-c混合编程,同时通过cocoapods进行管理的一些问题和解决办法
- 安装GIT
- C++无名命名空间详解
- 编程语言与脚本语言之间的区别(转)