#include
using namespace std;
template
struct Node
{
DataType data;//数据域
Node *next;//指针域
};
template
class LinkQueue
{
public:
LinkQueue();//初始化空的链队列
~LinkQueue();//释放链队列的存储空间
void enqueue(DataType x);//入队操作,将元素x入队
DataType dequeue();//出队操作,将队头元素出队
DataType gethead();//取链队列的队头元素
int empty();//判断链队列是否为空
private:
Node *front,*rear;//队头和队尾指针
};
template
LinkQueue::LinkQueue()
{
Node *s=nullptr;
s=new Node;s->next=nullptr;
front=rear=s;//将队头指针和队尾指针都指向头结点s
}
template
LinkQueue::~LinkQueue()
{
Node *p=front;
while(front!=nullptr)
{
front=front->next;
delete p;
p=front;
}
}
template
void LinkQueue::enqueue(DataType x)
{
Node *s=nullptr;
s=new Node;//申请结点s
s->data=x;s->next=nullptr;
rear->next=s;rear=s;//将结点s插入到队尾
}
template
DataType LinkQueue::dequeue()
{
DataType x;
Node *p=nullptr;
if(rearfront)throw"下溢";
p=front->next;x=p->data;//暂存队头元素
front->next=p->next;//将队头所在结点摘链
if(p->nextnullptr)rear=front;//出队前队列长度为1
delete p;
return x;
}
template
DataType LinkQueue::gethead()
{
if(frontrear)throw"下溢异常";
else
return front->next->data;
}
template
int LinkQueue::empty()
{
if(frontrear)
return 1;
else
return 0;
}
int main()
{
LinkQueue lq{};
cout<<“对58进行入队操作”<<endl;
lq.enqueue(58);
cout<<“当前队头元素为:”<<lq.gethead()<<endl;
return 0;
}
本文介绍了如何使用C++实现链队列的数据结构。包括链队列的初始化、入队、出队、获取队头元素和判断队列是否为空等操作。示例代码展示了链队列的基本功能,如向队列中加入元素58以及获取队头元素。
456

被折叠的 条评论
为什么被折叠?



