#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct qnode
{
int data;
struct qnode *next;
}QN,*QP;
typedef struct
{
QP front;
QP rear;
}LQ;
//建立空队列
LQ initq()
{
LQ q;
q.front=q.rear=(QP)malloc(sizeof(QN));
if(!q.front) exit(0);
q.front->next=NULL;
return q;
}
//销毁队列
void dstrq(LQ q)
{
while(q.front)
{
q.rear=q.front->next;
free(q.front);
q.front=q.rear;
}
}
//插入队尾元素
LQ enq(LQ q,int e)
{
QN *p;
p=(QP)malloc(sizeof(QN));
if(!p) exit(0);
p->data=e;
p->next=NULL;
q.rear->next=p;
q.rear=p;
return q;
}
//删除队头元素并返回该值
int delq(LQ q)
{
int e;QN *p;
if(q.front==q.rear) return 0;
p=q.front->next;
e=p->data;
q.front->next=p->next;
if(q.rear==p) q.rear=q.front;
free(p);
return e;
}
//输出队列
void prntq(LQ q)
{
QN *ph;
ph=q.front->next;
while(ph!=q.rear->next)
{
printf("%4d",ph->data);
ph=ph->next;
}
printf("/n");
}
void main()
{
LQ q;
q=initq();
q=enq(q,1);
q=enq(q,2);
q=enq(q,3);
q=enq(q,4);
q=enq(q,5);
q=enq(q,6);
prntq(q);
printf("%4d/n",delq(q));
prntq(q);
dstrq(q);
prntq(q);
q=initq();
printf("%4d/n",delq(q));
}