#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
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 Destroy(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 *q)
{
return (q->rear==NULL);
}
//进队列
void enQueue(LinkQuNode *&q,ElemType e)
{ DataNode *p;
p=(DataNode *)malloc(sizeof(DataNode));
p->data=e;
p->next=NULL;
if(q->rear==NULL)
q->front=q->rear=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;
}
//显示函数
void showqueue(LinkQuNode *&q)
{
LinkQuNode temp;
temp = q ->front->next;
printf(" 当前队列从头到尾:");
while(temp != NULL)
{
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
链队列操作(不完善)
最新推荐文章于 2024-10-16 10:13:45 发布