#include<stdio.h>
#include<stdlib.h>
//1 链队的定义====================
typedef int ElemType;
typedef struct LNode//结点定义
{
ElemType data;//数据域
LNode *next;//指针域
}LNode;
typedef struct //链队定义
{
LNode *front;//队首指针
LNode *rear;//队尾指针
}QUEUE;
//2 链队的基本操作================
//2.1 初始化
void InitQueue(QUEUE *Q)
{
Q->front=(LNode *)malloc(sizeof(LNode));
Q->rear=Q->front;
Q->front->next=0;
}
//2.2 入队
void EnQueue(QUEUE *Q, ElemType e)
{
LNode *p;
p=(LNode *)malloc(sizeof(LNode));//产生一新结点
p->data=e;//存储新元素
p->next=0;
Q->rear->next=p;
Q->rear=p;
}
//2.3 出队
void DeQueue(QUEUE *Q, ElemType *e)
{ LNode *p;
if(Q->front==Q->rear)
{
printf("队列是空的。\n");
return;
}
*e=Q->front->next->data;
p=Q->front->next;
Q->front->next=p->next;
if(p==Q->rear)
Q->rear=Q->front;
free(p);
}
//3 主函数==========================
void main()
{ int i;
QUEUE duilie;
InitQueue(&duilie);
for(i=1; i<=10; i++)
EnQueue(&duilie, 10*i);
ElemType e;
while(duilie.front!=duilie.rear)
{
DeQueue(&duilie, &e);
printf("%d ",e);
}
}