#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define M 30
#define TRUE 1
#define FALSE 0
#define MAXSIZE 50
#define QelemType int
typedef struct Node
{
QelemType data;
struct Node * next;
}LinkQNode;
typedef struct{
LinkQNode * front;
LinkQNode * rear;
}LinkQueue;
void initLinkQueue(LinkQueue *Q)
{
Q->front=(LinkQNode *)malloc(sizeof(LinkQNode));
Q->rear=Q->front;
Q->front->next=NULL;
}
int IsQEmpty(LinkQueue * Q)
{
if(Q->front==Q->rear) return TRUE;
else return FALSE;
}
int EnLinkQueue(LinkQueue * Q,QelemType x)
{
LinkQNode * NewNode;
NewNode=(LinkQNode *)malloc(sizeof(LinkQNode));
if(NewNode!=NULL)
{
NewNode->data=x;
NewNode->next=NULL;
Q->rear->next=NewNode;
Q->rear=NewNode;
return TRUE;
}
else return FALSE;
}
int DELinkQueue(LinkQueue *Q,QelemType *x)
{
LinkQNode *p;
if(Q->front==Q->rear)
return FALSE;
p=Q->front->next;
Q->front->next=p->next;
if(Q->rear==p)
Q->rear=Q->front;
*x=p->data;
free(p);
return TRUE;
}
int GetLQHead(LinkQueue * Q,QelemType *x)
{
LinkQNode *p;
if(Q->front==Q->rear)
return FALSE;
p=Q->front->next;
*x=p->data;
return TRUE;
}
int main()
{
char s[M];
int i,a;
LinkQueue *lq;
lq=malloc(sizeof(LinkQueue));
initLinkQueue(lq);
for(i=0;i<5;i++)
{
scanf("%d",&a);
EnLinkQueue(lq,a);
}
while(!IsQEmpty(lq))
{
if(GetLQHead(lq,&a))
printf("%3d",a);
DELinkQueue(lq,&a);
}
return 0;
}