# include <iostream>
using namespace std;
template<typename T>
struct Node
{
T data;
Node<T> *next;
};
template<typename T>
class LinkQueue
{
public:
LinkQueue();
~LinkQueue();
void EnQueue(T x);
T DeQueue();
T GetHead();
int Empty();
private:
Node<T> *front,*rear;
};
template<typename T>
LinkQueue<T>::LinkQueue() //默认构造
{
front=new Node<T>;
rear=front;
}
template<typename T>
LinkQueue<T>::~LinkQueue() //析构函数
{
Node<T> *p=front;
while(p!=NULL)
{
front=front->next;
delete p;
p=front;
}
}
template<typename T>
void LinkQueue<T>::EnQueue(T x) //入队操作
{
Node<T> *p=new Node<T>;
p->data=x;
p->next=NULL;
rear->next=p;
rear=p;
}
template<typename T>
T LinkQueue<T>::DeQueue() //出队操作
{
if(front==rear) throw "队空";
else
{
Node<T> *p=front->next;
front->next=p->next;
T x=p->data;
delete p;
return x;
}
}
template<typename T>
T LinkQueue<T>::GetHead() //获取队头
{
if(front==rear) throw "队空";
else
{
return front->data;
}
}
template<typename T>
int LinkQueue<T>::Empty() //判空
{
if(front==rear) return 1;
else return 0;
}
void main()
{
LinkQueue<int> l;
for(int i=0;i<8;i++)
{
l.EnQueue(i);
}
cout<<"Empty():"<<l.Empty()<<endl;
cout<<"GetHead():"<<l.GetHead()<<endl;
for(int j=0;j<8;j++)
{
cout<<l.DeQueue()<<" ";
}
}
数据结构 链队列的实现(C++)
最新推荐文章于 2022-02-26 11:55:12 发布