两个队列实现栈
来源:互联网 发布:网络视频如何下载 编辑:程序博客网 时间:2024/06/03 15:29
在实现栈转换为队列后,现在可以用两个队列实现一个栈,就是将“先进先出”改为“先进后出”的方式,实现的基本思路是用一个队列保存数据,当储存数据的队列pop到只剩一个数据时,函数pop
#include<iostream> //两个队列实现一个栈
#include<cstdlib>
#include<queue>
#include<cassert>
using namespace std;
template<class T>
class Stack
{
public:
void Push(const T& data);
void Pop();
private:
queue<T> q1;
queue<T> q2;
};
#include<cstdlib>
#include<queue>
#include<cassert>
using namespace std;
template<class T>
class Stack
{
public:
void Push(const T& data);
void Pop();
private:
queue<T> q1;
queue<T> q2;
};
template<class T>
void Stack<T>::Push(const T& data)
{
if(!q1.empty()) //q1不为空
q1.push(data);
else
q2.push(data);
}
template<class T>
void Stack<T>::Pop()
{
assert(q1.size()+q2.size());
queue<T>* tmp1=NULL;
queue<T>* tmp2=NULL;
if(q1.empty()) //q1为空
{
tmp2=&q1;
tmp1=&q2;
void Stack<T>::Push(const T& data)
{
if(!q1.empty()) //q1不为空
q1.push(data);
else
q2.push(data);
}
template<class T>
void Stack<T>::Pop()
{
assert(q1.size()+q2.size());
queue<T>* tmp1=NULL;
queue<T>* tmp2=NULL;
if(q1.empty()) //q1为空
{
tmp2=&q1;
tmp1=&q2;
}
else
{
tmp2=&q2;
tmp1=&q1;
else
{
tmp2=&q2;
tmp1=&q1;
}
while(tmp1->size()>1)
{
tmp2->push(tmp1->front());
tmp1->pop();
}
cout<<tmp1->front();
tmp1->pop();
}
int main()
{
Stack<int> s;
s.Push(1);
s.Push(2);
s.Push(3);
s.Push(4);
s.Pop();
s.Pop();
s.Pop();
s.Pop();
system("pause");
return 0;
}
while(tmp1->size()>1)
{
tmp2->push(tmp1->front());
tmp1->pop();
}
cout<<tmp1->front();
tmp1->pop();
}
int main()
{
Stack<int> s;
s.Push(1);
s.Push(2);
s.Push(3);
s.Push(4);
s.Pop();
s.Pop();
s.Pop();
s.Pop();
system("pause");
return 0;
}
阅读全文
0 0
- 两个栈实现队列
- 两个队列实现栈
- 两个栈实现队列
- 两个栈实现队列
- 两个栈实现队列
- 两个队列实现栈
- 两个栈实现队列
- 两个 栈 实现队列
- 两个栈实现队列
- 两个队列实现栈
- 两个栈实现队列
- 两个栈实现队列
- 两个队列实现栈
- 两个栈实现队列
- 两个栈实现队列
- 两个栈实现队列
- 队列--两个栈实现
- 两个队列实现栈
- WebApiThrottle限流框架使用手册
- 我为什么一直不看好以太坊
- 深入理解WeakHashMap
- MapDB 教程二
- 元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。
- 两个队列实现栈
- 十款最实用的Android UI设计工具
- 整合 spring mvc+spring+mybatis
- http 请求服务器收到中文乱码问题
- iOS block为什么用copy修饰?
- 链表的二叉查找树
- 欢迎使用CSDN-markdown编辑器
- 三种常用构图方式
- mapreduce优化