经典面试题(七)
来源:互联网 发布:软件总体技术方案 编辑:程序博客网 时间:2024/04/25 19:51
利用两个栈来实现队列的操作。
代码如下所示
#include <iostream>#include <stack>using namespace std;template<class T>class QueueFromStack{private: stack<T> s1; stack<T> s2;public: // use reference instead of variable pass void push(const T& value); T pop();};template<class T>void QueueFromStack<T>:: push(const T& value){ s1.push(value);}template<class T>T QueueFromStack<T>:: pop(){ if(!s2.empty()){ T tmp = s2.top(); s2.pop(); return tmp; }else if( !s1.empty() ){ while(!s1.empty()){ s2.push(s1.top()); s1.pop(); } T tmp = s2.top(); s2.pop(); return tmp; }else // this is very important throw new exception();}int main(){ int array[10]={1,2,3,4,5,6,7,8,9,0}; QueueFromStack<int> *queue = new QueueFromStack<int>(); for(int i = 0 ; i < 10; ++i){ queue->push(array[i]); } for(int i = 0 ; i < 10; ++i){ cout<<queue->pop()<<" "; } cout<<endl; delete queue; system("PAUSE"); return 0;}
利用两个队列来实现栈的操作
#include <iostream>#include <queue>using namespace std;template<class T>class StackFromQueue{private: queue<T> q1; queue<T> q2; T pop(queue<T>& q1, queue<T>& q2);public: void push(const T& value); T pop();};template<class T>T StackFromQueue<T>::pop(queue<T>& q1, queue<T>& q2){ while(1!=q2.size()){ q1.push(q2.front()); q2.pop(); } T tmp = q2.front(); q2.pop(); return tmp; }template<class T>void StackFromQueue<T>::push(const T& value){ if(!q1.empty()) q1.push(value); else q2.push(value);}template<class T>T StackFromQueue<T>::pop(){ if(q1.empty() && q2.empty()) throw new exception(); if(q1.empty()) return pop(q1,q2); else return pop(q2,q1);}int main(){ StackFromQueue<int> stack; for(int i = 0 ; i < 10; ++i) stack.push(i); for(int i = 0 ; i < 10 ; ++i) cout<<stack.pop()<<" "; cout<<endl; system("PAUSE"); return 0;}
- 经典面试题(七)
- C++经典面试题(七)
- [转载]linux C经典面试题七
- linux C经典面试题七
- linux C经典面试题七
- Linux Shell经典面试题(其七)
- 经典面试题(*****)
- 面试题(七)JAVA
- 面试题整理(七)
- iOS 面试题(七)
- 面试题积累(七)
- java面试题(七)
- java面试题(七)
- C++面试题(七)
- Java面试题(七)
- 主题七 最终的胜利----40.经典面试题详解
- 上海贝尔面试题(经典)
- @经典面试题(一)@
- 调用系统自带地图
- 黑马程序员--SQL语句学习总结2
- 《Oracle Database 11g SQL 开发指南》学习笔记——第四章_使用简单函数(二)
- 秋雨寄相思
- c# 托管资源和非托管资源
- 经典面试题(七)
- AS3 操作XML,增加、删除、修改、查找
- 七夕夜、离别,涵情经河岸
- 静态查找
- Camel 组件之 Timer
- Android线程间通信机制(Handler Looper )
- 游戏二: 随处移动的Ball
- 紫薇花开的季节(二)
- hdu Minimum Inversion Number(线段树求逆序数有关问题的一个小归纳)