两个栈实现一个队列
#include <iostream>
#include <stack>
using namespace std;
template<typename T>
class StackQueue
{
public:
StackQueue()
{}
~StackQueue()
{}
void Push_Front(const T& x)
{
s1.push(x);
}
T& Pop_Back()
{
if(s2.size()==0)
{
while (s1.size()>0)
{
s2.push(s1.top());
s1.pop();
}
}
/* if(s2.size()==0)
cout<<"队列为空"<<endl;*/
T tmp=s2.top();
s2.pop();
return tmp;
}
private:
stack<T> s1,s2;
};
void test3()
{
StackQueue<int> sq;
sq.Push_Front(1);
sq.Push_Front(2);
sq.Push_Front(3);
sq.Push_Front(4);
sq.Push_Front(5);
sq.Push_Front(6);
int len=6;
while(len)
{
cout<<sq.Pop_Back()<<" ";
--len;
}
cout<<endl;
}
转载请注明原文地址: https://ju.6miu.com/read-1200032.html