#include"queue.h"
//创建
queuelinkPtr create()
{
//申请链队空间
queuelinkPtr QL = (queuelinkPtr)malloc(sizeof(queuelink));
if(NULL==QL)
{
printf("申请链队空间失败\n");
return NULL;
}
//申请节点空间
QL->front = (node*)malloc(sizeof(node));
if(NULL==QL->front)
{
printf("申请节点空间失败\n");
return NULL;
}
QL->front->len = 0;
QL->front->next = NULL;
QL->tail = QL->front;
printf("创建成功\n");
return QL;
}
//判空
int empty(queuelinkPtr QL)
{
if(NULL==QL)
{
printf("判空失败\n");
return -1;
}
return QL->front == QL->tail;
}
//入队
int push(queuelinkPtr QL,DataType e)
{
if(NULL==QL)
{
printf("入队失败");
return -1;
}
//申请节点
node *p = (node*)malloc(sizeof(node));
if(NULL==p)
{
printf("申请节点失败\n");
return -1;
}
p->data = e;
p->next = NULL;
//尾插
QL->tail->next = p;
QL->tail = p;
QL->front->len++;
return 1;
}
//遍历
void show(queuelinkPtr QL)
{
if(NULL==QL || empty(QL))
{
printf("遍历失败\n");
return;
}
node *p = QL->front;
while(p->next!=NULL)
{
p=p->next;
printf("%d ",p->data);
}
printf("\n");
return;
}
//出队
int pop(queuelinkPtr QL)
{
if(NULL==QL || empty(QL))
{
printf("出队失败\n");
return -1;
}
node *H = QL->front;
printf("出队元素为%d\n",H->next->data);
node *p = H->next;
H->next = H->next->next;
free(p);
p=NULL;
return 1;
}
//队列长度
int queue_len(queuelinkPtr QL)
{
if(NULL==QL)
{
printf("求长失败\n");
return -1;
}
int i = 0;
node *p = QL->front;
while(p->next!=NULL)
{
p=p->next;
i++;
}
return i;
}
//销毁队列
void free_queue(queuelinkPtr QL)
{
if(NULL==QL)
{
printf("销毁队列失败\n");
return;
}
node *p = QL->front;
while(p->next!=NULL)
{
node *q = p;
p=p->next;
free(q);
q=NULL;
}
free(QL);
QL=NULL;
printf("销毁成功\n");
return;
}
数据结构 7.10 链式队列
最新推荐文章于 2024-10-16 11:00:59 发布