数据结构队列链表,此代码有初始化、入队、出队、判断队是否为空,可以直接copy调试。
#include"stdio.h"
#include"stdlib.h"
typedef struct node * pointer;
struct node{
int data;
pointer next;
};
typedef struct
{
pointer front,rear;
}queue;
//初始化
void init(queue *q)
{
pointer p;
p=(pointer)malloc(sizeof(struct node));
p->next=NULL;
q->front=p;
q->rear=p;
}
//入队
void insert(queue *q,int x)
{
pointer p;
p=(pointer)malloc(sizeof(struct node));
p->data=x;
q->rear->next=p;
q->rear=p;
p->next=NULL;
}
//出队
void del(queue *q,int *x)
{
pointer p;
if(q->front==q->rear) return;
p=q->front->next;
*x=p->data;
q->front->next=p->next;
free(p);
}
//判断队是否为空
int empty(queue *q)
{
if(q->front==q->rear)
{
printf("队列为空!\n");
return 0;
}
else
{
printf("队列非空!\n");
return 1;
}
}
void main()
{
queue q;
pointer l;
int s;
init(&q);//初始化
insert(&q,5);//入队
insert(&q,6);
//打印队列
l=q.front->next;
for(;l!=NULL;)
{
printf("%d\n",l->data);
l=l->next;
}
empty(&q);//判断队是否为空
del(&q,&s);//出队
l=q.front->next;
printf("出队后的数据:\n");
for(;l!=NULL;)
{
printf("%d\n",l->data);
l=l->next;
}
}