#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{
int data;
struct node *next;
}linklist_t;
typedef struct __queue__
{
struct node *front;
struct node *rear;
}linkqueue_t;
//**************************************************************
linkqueue_t * creat_linkqueue(void) //创建空的链队列 和链表 并将队列的指针指向指向链表的头
{
linkqueue_t * q = (linkqueue_t *)malloc(sizeof(linkqueue_t));
linklist_t * l = (linklist_t * )malloc(sizeof(linklist_t));
l->data = 0;
l->next = NULL;
q->front = q->rear =l;
return q;
}
//**************************************************************
int queue_is_empty(linkqueue_t *q)
{
return (q->front == q->rear )?1:0;
}
//**************************************************************
void en_queue(linkqueue_t *q,int val) //入队
{
linklist_t *l = (linklist_t *)malloc(sizeof(linklist_t));
l->data = val;
l->next = q->rear->next;
q->rear->next = l;
q->rear = l;
}
//**************************************************************
void de_queue(linkqueue_t *q,int *val) //出队
{
if (queue_is_empty(q))
{
printf("queue_is_empty\n");
}
else
{
linklist_t *t = q->front->next;
*val = t->data;
q->front->next = t->next;
if (t->next == NULL)
q->rear = q->front;
free(t);
}
}
int main()
{
linkqueue_t *Q = creat_linkqueue();
int val,i;
for(i=1;i<=10;i++)
{
en_queue(Q,i);
}
for(i=1;i<=10;i++)
{
de_queue(Q,&val);
printf("%-3d",val);
}
printf("\n");
return 0;
}
数据结构-链式队列
最新推荐文章于 2025-05-09 23:12:58 发布