两个队列实现一个栈,并实现基本功能
#include <iostream>
#include<queue>
using namespace std;
template<typename T>
class QueueStack
{
public:
QueueStack()
{}
~QueueStack()
{}
void Push(const T& x)
{
if (q1.size()>0)
{
q1.push(x);
}
else if (q2.size()>0)
{
q2.push(x);
}
else
{
q1.push(x);
}
}
T& Pop()
{
if(q1.size()==0)
{
while (q2.size()>1)
{
q1.push(q2.front());
q2.pop();
}
T& data=q2.front();
q2.pop();
return data;
}
else
{
while (q1.size()>1)
{
q2.push(q1.front());
q1.pop();
}
T& data=q1.front();
q1.pop();
return data;
}
}
private:
queue<T> q1,q2;
};
void test2()
{
QueueStack<int> qs;
qs.Push(1);
qs.Push(2);
qs.Push(3);
qs.Push(4);
qs.Push(5);
qs.Push(6);
int len=6;
for(int i=0;i<len;i++)
{
cout<<(qs.Pop())<<" ";
--len;
}
cout<<endl;
}