队列理解为一种链式线性表,这种链表是“先进先出”
代码如下:
#include <stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}linklist;
linklist *init_queue(void) //是队列初始化
{
linklist *Q=(linklist *)malloc(sizeof(linklist));
Q->data=0;
Q->next=NULL;
return Q;
}
void e_queue(linklist *Q,int data) //进入队列
{
int i=0;
linklist *q=Q;
linklist *l= (linklist *)malloc(sizeof(linklist));
l->data=data;
for(i=0;i< Q->data;i++)
q=q->next;
l->next=q->next;
q->next=l;
Q->data++;
}
int is_empty(linklist *l) //队列是否为空
{
if(l->next==NULL || l->data==0)
{
return 1;
}
else
return 0;
}
int delet(linklist *l) //出队列
{
if(is_empty(l))
return -1;
else
{
linklist *p=l->next;
int data =p->data;
l->next=p->next;
free(p);
return data;
}
}
void print(linklist *Q) //队列遍历打印
{
linklist *l=Q->next;
while(l!=NULL)
{
printf("%d ->",l->data);
l=l->next;
}
printf("null\n");
}
int main()
{
linklist *q=NULL;
q=init_queue();
e_queue(q,1);
e_queue(q,2);
e_queue(q,3);
e_queue(q,4);
e_queue(q,5);
print(q);
int data;
data=delet(q);
data=delet(q);
print(q);
free(q);
return 0;
}