链式队列操作函数接口 原型声明
queque_t *init(void);
int empty(queque_t *qu);
void display(queque_t *qu);
datatype read(queque_t *qu);
queque_t *insert(queque_t *qu,datatype x);
queque_t *delet(queque_t *qu);
链式队列数据结构体定义
//链式队列
typedef int datatype;
typedef struct node
{
datatype info;
struct node *next;
}node_t;
typedef struct
{
node_t *front;
node_t *rear;
}queque_t;
完整代码
#include <stdio.h>
#include <malloc.h>
//链式队列
typedef int datatype;
typedef struct node
{
datatype info;
struct node *next;
}node_t;
typedef struct
{
node_t *front;
node_t *rear;
}queque_t;
queque_t *init(void);
int empty(queque_t *qu);
void display(queque_t *qu);
datatype read(queque_t *qu);
queque_t *insert(queque_t *qu,datatype x);
queque_t *delet(queque_t *qu);
queque_t *init(void)
{
queque_t *qu = (queque_t *)malloc(sizeof(queque_t));
if(!qu)
{
printf("malloc error faill!\n");
return NULL;
}
qu->front = NULL;
qu->rear = NULL;
return qu;
}
int empty(queque_t *qu)
{
return (qu->front)?(0):(1);
}
void display(queque_t *qu)
{
node_t *p = qu->front;
int index = 0;
printf("----- show the queue data -----\n");
while(p)
{
printf("%d : [%d]\n",index,p->info);
index++;
p = p->next;
}
}
datatype read(queque_t *qu)
{
if(qu->front)
{
return qu->front->info;
}
else
{
printf("have no data\n");
return -1;
}
}
queque_t *insert(queque_t *qu,datatype x)
{
node_t *p = (node_t *)malloc(sizeof(node_t));
if(p)
{
p->info = x;
p->next = NULL;
}
else
{
printf("malloc error faill\n");
return qu;
}
if(qu->rear)
{
qu->rear->next = p;
qu->rear = p;
}
else
{
qu->rear = p;
qu->front = p;
}
return qu;
}
queque_t *delet(queque_t *qu)
{
node_t *p = NULL;
if(qu->front)
{
p = qu->front;
qu->front = p->next;
if(p)
{
free(p);
}
return qu;
}
else
{
qu->rear = NULL;
printf("have no data\n");
return qu;
}
}
int main()
{
queque_t *q = init();
printf("is the queue empty ? : %d\n",empty(q));
q = insert(q,1);
q = insert(q,2);
q = insert(q,3);
q = insert(q,4);
q = insert(q,5);
display(q);
printf("read quque front data:%d\n",read(q));
q = delet(q);
printf("read quque front data:%d\n",read(q));
q = delet(q);
printf("read quque front data:%d\n",read(q));
q = delet(q);
display(q);
printf("insert data 88 99\n");
q = insert(q,88);
q = insert(q,99);
display(q);
printf("read quque front data:%d\n",read(q));
q = delet(q);
printf("read quque front data:%d\n",read(q));
q = delet(q);
display(q);
}
运行结果