两个队列实现一个栈,并实现入栈、出栈、取栈顶等相关操作
来源:互联网 发布:json.net dynamic 编辑:程序博客网 时间:2024/06/01 10:27
分析:熟悉队列的先进先出,队列的进队出队、取队头队尾相关操作。这样就不难实现栈的相关操作。对照下面的示意图,理解程序代码。
实现代码:
#include<iostream>#include<queue>using namespace std;template<class T>class DoubleQueue_Stack{public: void Push(T data){ //将元素压入q1 q1.push(data); } void Pop(){ //元素出栈,就是弹出最后一个进入的元素 if(!q1.empty()){ //q1非空,就把q1最后一个弹出,这时其他元素进q2 while(q1.size()>1){ q2.push(q1.front()); q1.pop(); } q1.pop(); } else if(!q2.empty()){ //q2非空,就把q2最后一个弹出,这时其他元素进q1 while(q2.size()>1){ q1.push(q2.front()); q2.pop(); } q2.pop(); } } T& Top(){ //取栈顶元素,就是取队列最后进入的那一个 if(!q1.empty()) return q1.back(); if(!q2.empty()) return q2.back(); } bool Empty(){ //q1和q2都非空,栈才为空 if(q1.empty()&&q2.empty()) return true; return false; }private: queue<T> q1; queue<T> q2;};int main(){ DoubleQueue_Stack<int> s; s.Push(1); s.Push(2); s.Push(3); s.Push(4); s.Pop(); s.Push(5); s.Push(6); s.Pop(); s.Pop(); cout<<s.Top()<<endl; return 0;}
阅读全文
0 0
- 两个队列实现一个栈,并实现入栈、出栈、取栈顶等相关操作
- 两个栈实现一个队列,并实现队列入队、出队、取队头、取队尾相关操作
- 两个队列实现栈--出栈,入栈
- 用两个栈实现一个队列:实现出队列和入队列功能,用两个队列实现一个栈
- 如何用两个队列实现一个栈,并分析有关栈操作的运行时间。
- 两个队列实现一个栈&两个栈实现一个队列
- 两个栈实现一个队列-----两个队列实现一个栈
- 两个栈实现一个队列&&两个队列实现一个栈
- 两个栈实现一个队列 && 两个队列实现一个栈
- 两个栈实现一个队列,两个队列实现一个栈
- 两个栈实现一个队列/两个队列实现一个栈
- 两个栈实现一个队列&两个队列实现一个栈
- 两个队列实现一个栈&两个栈实现一个队列
- 两个队列实现一个栈 / 两个栈实现一个队列
- 两个栈实现一个队列,两个队列实现一个栈
- 两个栈实现一个队列&两个队列实现一个栈
- 两个栈实现一个队列&&两个队列实现一个栈
- 两个栈实现一个队列&两个队列实现一个栈
- python版猜数字游戏
- C/C++中的字符串4个库函数
- android bitmap与base64字符串之间转换
- php实现中文字串截取无乱码的方法
- 53. Maximum Subarray
- 两个队列实现一个栈,并实现入栈、出栈、取栈顶等相关操作
- Log4j打印日志添加请求ID(包含多线程)
- c++实现大位数乘法
- Hive(1)-Hive体系结构
- JSP中的JSTL 和 EL
- MD5加密
- Android自定义属性详细剖析(一)
- Seek the Name, Seek the Fame POJ
- windows 下 sourceTree 乱码问题