//李春葆数据结构第五版
#include<iostream>
#include<cstdlib>
using namespace std;
typedef int ElemType;
typedef struct qnode
{
ElemType data;
struct qnode *next;
}DataNode;//普通结点
typedef struct
{
DataNode *front;
DataNode *rear;
}LinkQuNode; //头尾结点
void InitQueue(LinkQuNode *&q)//初始化队列
{
q=(LinkQuNode *)malloc(sizeof(LinkQuNode));
q->front=q->rear=NULL;
}
void DestroyQueue(LinkQuNode *&q)//销毁队列
{
DataNode *pre=q->front,*p;
if(pre!=NULL)
{
p=pre->next;
while(p!=NULL)
{
free(pre);
pre=p;
p=p->next;
}
free(pre);
}
free(q);
}
bool QueueEmpty(LinkQuNode *qu)//判空
{
return qu->rear==NULL;
}
bool enQueue(LinkQuNode *q,ElemType e)//进队列
{
DataNode *p;
p=(DataNode *)malloc(sizeof(DataNode));
p->data=e;
p->next=NULL;
if(q->rear==NULL)q->rear=q->front=p;
else
{
q->rear->next=p;
q->rear=p;
}
}
bool deQueue(LinkQuNode *&q,ElemType &e)//出队列
{
DataNode *t;
if(q->rear==NULL)return false;
t=q->front;
if(q->front==q->rear)
{
q->front=q->rear=NULL;
}
else
{
q->front=q->front->next;
}
e=t->data;
free(t);
return true;
}
int main()
{
LinkQuNode *qu;
ElemType e;
InitQueue(qu);
enQueue(qu,1);
enQueue(qu,2);
enQueue(qu,3);
deQueue(qu,e);
cout<<e<<endl;
DestroyQueue(qu);
return 0;
}
数据结构链队实现
最新推荐文章于 2023-12-03 11:39:34 发布