#ifndef LINKQUEUE_H
#define LINKQUEUE_H
typedef int datatype;
typedef struct node{
datatype data;
struct node *next;
}listnode,*linklist;
typedef struct {
linklist front;
linklist rear;
}linkqueue;
linkqueue *linkqueue_creat();
int linkenqueue(linkqueue *lq,datatype value);
datatype linkdequeue(linkqueue *lq);
int linkqueue_empty(linkqueue *lq);
int linkqueue_clear(linkqueue *lq);
linkqueue *linkqueue_free(linkqueue *lq);
#endif
#include <stdio.h>
#include "linkqueue.h"
#include <stdlib.h>
#include <string.h>
linkqueue *linkqueue_creat(){//创建队列
linkqueue *lq;
lq=(linkqueue *)malloc(sizeof(linkqueue));
lq->front=lq->rear=(linklist)malloc(sizeof(listnode));
lq->front->data=0;
lq->front->next=NULL;
return lq;
}
int linkenqueue(linkqueue *lq,datatype value){//插入一个数据
linklist q;
q=(linklist)malloc(sizeof(listnode));
q->data=value;
q->next=NULL;
lq->rear->next=q;
lq->rear=q;
return 0;
}
datatype linkdequeue(linkqueue *lq){//出队
linklist p;
datatype d;
p=lq->front;
d=p->next->data;
lq->front=p->next;
return d;
}
int linkqueue_empty(linkqueue *lq){//判断队列是否为空
if(lq->front==lq->rear){
return 1;
}else{
return 0;
}
}
int linkqueue_clear(linkqueue *lq){//清空队列
linklist q;
while(lq->front->next){
q=lq->front;
lq->front=q->next;
printf("clear free:%d\r\n",q->data);
free(q);
q=NULL;
}
return 0;
}
linkqueue * linkqueue_free(linkqueue *lq){//释放队列
linklist p;
while(lq->front){
p=lq->front;
lq->front=p->next;
printf("free:%d\n",p->data);
free(p);
}
free(lq);
lq=NULL;
return NULL;
}
链式队列程序代码
最新推荐文章于 2024-08-23 18:38:13 发布