/*
链队列
*/
#include <iostream>
using namespace std;
template<typename T>
struct Node
{
T data;
Node<T>*next;
};
template<typename T>
class LinkQueue
{
private:
Node<T>*front,*rear;
public:
LinkQueue();
~LinkQueue();
int Empty();
void EnQueue(T a);
T DeQueue();
T GetHead();
};
template<typename T>
LinkQueue<T>::LinkQueue()
{
Node<T>*s=nullptr;
s=new Node<T>;
s->next=nullptr;
rear=front=s;
}
template<typename T>
LinkQueue<T>::~LinkQueue()
{
Node<T>*p=front;
while (p!=nullptr)
{
front=front->next;
delete p;
p=front;
}
}
template<typename T>
int LinkQueue<T>::Empty()
{
if(rear==front)
return 1;
return 0;
}
template<typename T>
void LinkQueue<T>::EnQueue(T a)
{
Node<T>*p=nullptr;
p=new Node<T>;
p->data=a;
p->next=nullptr;
rear->next=p;
rear=p;
}
template<typename T>
T LinkQueue<T>::DeQueue()
{
Node<T>*p=nullptr;
T x;
if(rear==front)throw "下溢";
p=front->next;
x=p->data;
front->next=p->next;
if(p->next==nullptr)
rear=front;
delete p;
return x;
}
template<typename T>
T LinkQueue<T>::GetHead()
{
if(rear==front)
throw "无元素";
else
return front->next->data;
}
int main()
{
LinkQueue<int> L;
L.EnQueue(10);
L.EnQueue(20);
L.EnQueue(30);
cout<<L.DeQueue()<<endl;
cout<<L.DeQueue()<<endl;
cout<<L.GetHead()<<endl;
if(L.Empty())
cout<<"空队"<<endl;
else
cout<<"非空"<<endl;
cout<<L.DeQueue()<<endl;
if(L.Empty())
cout<<"空队"<<endl;
else
cout<<"非空"<<endl;
}
C++ 数据结构——链队
最新推荐文章于 2022-10-03 16:23:41 发布