描述
输入若干个整数(小于50个),整数共有四种类型,不同类型的整数代表不同操作。说明如下:
1、[10,99]之间的整数:将该整数入队。
2、-1: 队首整数出队。
3、-2: 显示队列所有整数。
4、-3: 输入结束。
说明:采用链队列实现,必须有队列初始化函数、入队函数、出队函数。
输入
第一行若干整数(必须满足上述四种类型要求),以-3结束。
输出
输出队列中所有整数。
#include <iostream>
using namespace std;
template<class T>
struct Node
{
T data;
Node <T> *next;
};
template <class T>
class LinkQueue
{
public:
LinkQueue();
void EnQueue(T x);
T DeQueue();
T GetQueue();
bool Empty();
void show();
private:
Node<T> *front, *rear;
};
template <class T>
LinkQueue<T>::LinkQueue()
{
front=new Node<T>;
front->next=NULL;
rear=front;
}
template <class T>
void LinkQueue<T>::EnQueue(T x)
{
Node<T> *s;
s=new Node<T>;
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}
template <class T>
T LinkQueue<T>::DeQueue( )
{
Node<T> *p;
T x;
if (rear==front) throw "下溢";
p=front->next;
x=p->data;
front->next=p->next;
delete p;
if (front->next==NULL) rear=front;
return x;
}
template <class T>
void LinkQueue <T>::show()
{
Node <T> *p;
p=front->next;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
int main()
{
int x;
LinkQueue<int> ob;
while(cin>>x)
{
if(x==-1) ob.DeQueue();
if(x==-3) break;
if(x>0) ob.EnQueue(x);
if(x==-2) ob.show();
}
}