#include<iostream.h>
template<class T>
struct N//定义结构体类型的结点
{
N*next;
Tdata;
};
template<class T>
class Linkqueue
{N<T>*front,*rear;
public:
Linkqueue();
~Linkqueue(){}
boolempty();
voidEnqueue(T x);
TDequeue();
voidGetqueue();
voidprint();
};
template<class T>//构造函数
Linkqueue<T>::Linkqueue()
{
N<T> *s=new N<T>;//申请一个结构体类型大小的动态空间,并将首地址赋给结构体类型的指针s
s->next=NULL;
front=rear=s;
}
template<class T>//判空
bool Linkqueue<T>::empty()
{
if(rear==front)
returntrue;
else
returnfalse;
}
template<class T>//入队
void Linkqueue<T>::Enqueue(T x)
{
N<T>*s;
s=newN<T>;
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}
template<class T>
T Linkqueue<T>::Dequeue()//出队
{
N<T>*p;
if(empty())throw"underflow";
p=front->next;
Tx=p->data;
front->next=p->next;
if(p->next==NULL)
rear=front;
deletep;
returnx;
}
template<class T>
void Linkqueue<T>::Getqueue()//输出头元素
{ cout<<"队列的头元素是:";
Tx=front->next->data;
cout<<x<<endl;
}
template<class T>
void Linkqueue<T>::print()//遍历
{
N<T>*p;
Tx;
p=front->next;
cout<<"队列的所有元素是:";
while(p!=NULL)
{
x=p->data;
cout<<x<<"";
p=p->next;
};
cout<<endl;
}
int main()
{
Linkqueue<char>Link;//定义对象
Link.Enqueue('h');
Link.Enqueue('e');
Link.Enqueue('y');
Link.print();
Link.Getqueue();
cout<<"删除元素:"<<Link.Dequeue()<<endl;
Link.print();
return0;
}