两个栈实现一个队列——栈和队列面试题(2)
来源:互联网 发布:董洁 王大治 知乎 编辑:程序博客网 时间:2024/05/17 02:00
题目要求:规定用两个栈实现一个队列,实现内部函数
"test.cpp"
#include<iostream>using namespace std;#include<stack>template<class T>class TwoStackFromQueue{public:TwoStackFromQueue(){}void Push(const T& data){if(PushStack.empty()){if(!PopStack.empty()){while(!PopStack.empty()){PushStack.push(PopStack.top());PopStack.pop();}PushStack.push(data);}else{PushStack.push(data);}}else{PushStack.push(data);}}void Pop(){if(PopStack.empty()){if(!PushStack.empty()){while(!PushStack.empty()){PopStack.push(PushStack.top());PushStack.pop();}PopStack.pop();}else{PopStack.pop();}}else{PopStack.pop();}}T& Front(){if(!PopStack.empty()){return PopStack.top();}else{while(!PushStack.empty()){PopStack.push(PushStack.top());PushStack.pop();}return PopStack.top();}}T& Back(){if(!PushStack.empty()){return PushStack.top();}else{while(!PopStack.empty()){PushStack.push(PopStack.top());PopStack.pop();}return PushStack.top();}}size_t Size(){if(PushStack.empty()){return PopStack.size();}else{return PushStack.size();}}bool Empty(){if(PushStack.empty()){return PopStack.empty();}else{return PushStack.empty();}}private:stack<T> PushStack;stack<T> PopStack;};void test(){TwoStackFromQueue<int> q;q.Push(7);q.Push(3);q.Push(2);q.Push(4);q.Push(6);q.Push(9);q.Push(0);cout<<"end = "<<q.Back()<<endl;cout<<"begin = "<<q.Front()<<endl;cout<<"size = "<<q.Size()<<endl;cout<<endl;q.Pop();q.Pop();cout<<"end = "<<q.Back()<<endl;cout<<"begin = "<<q.Front()<<endl;cout<<"size = "<<q.Size()<<endl;}int main(){test();return 0;}
0 0
- 两个栈实现一个队列——栈和队列面试题(2)
- 两个队列实现一个栈——栈和队列面试题(3)
- 面试题(两个栈实现一个队列和两个队列实现一个栈)
- 一个数组实现两个栈——栈和队列面试题(5)
- 面试题-----两个栈实现一个队列
- 面试题7两个栈实现一个队列和两个队列实现一个栈
- 栈和队列面试题(三)---用两个队列实现一个栈
- 栈和队列的面试题(四)---用两个栈实现一个队列
- 面试题7:用两个栈实现队列和用两个队列实现一个栈
- 栈&队列面试题之两个队列实现一个栈
- 栈和队列面试题(一)---一个数组实现两个栈
- 数据结构面试题(1)--用两个队列实现一栈和用两个栈实现一个队列
- 面试题7—用两个栈实现队列
- 【数据结构】栈面试题--两个栈实现一个队列
- 【数据结构】栈面试题--两个队列实现一个栈
- 面试题--用两个栈实现一个队列
- 经典面试题一:用两个栈实现一个队列
- 面试题 用两个栈实现一个队列
- 构建表达式树
- 求子集
- 基于用户画像大数据的电商防刷架构
- NSPredicate 谓词
- 偷偷超了华为和小米,他才是真正的人生大赢家!
- 两个栈实现一个队列——栈和队列面试题(2)
- 青蛙跳台阶问题暨斐波那契数列
- 第3周项目4 顺序表应用(1)
- Swift编程语言3.0----第一章 语言基础
- CF - 500B New Year Permutation
- MyEclipse新建Web工程需要注意的问题
- [数据库迁移] ORACLE到MYSQL经验总结
- android中相关的图片处理
- Java8初体验(二)Stream语法详解