#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
typedef int datatype;
typedef struct _node_
{
datatype data;
struct _node_ *next;
} linknode, *linklist;
{
datatype data;
struct _node_ *next;
} linknode, *linklist;
typedef struct
{
linklist front;
linklist rear;
} linkqueue;
{
linklist front;
linklist rear;
} linkqueue;
linkqueue *CreateEmptyQueue()
{
linkqueue *lq;
{
linkqueue *lq;
lq = (linkqueue *)malloc(sizeof(linkqueue));
lq->front = lq->rear = (linklist)malloc(sizeof(linknode));
lq->front->next = NULL;
lq->front = lq->rear = (linklist)malloc(sizeof(linknode));
lq->front->next = NULL;
return lq;
}
}
int EmptyQueue(linkqueue *lq)
{
return (lq->front == lq->rear);
}
{
return (lq->front == lq->rear);
}
void EnQueue(linkqueue *lq, datatype x)
{
lq->rear->next = (linklist)malloc(sizeof(linknode));
lq->rear = lq->rear->next;
lq->rear->data = x;
lq->rear->next = NULL;
{
lq->rear->next = (linklist)malloc(sizeof(linknode));
lq->rear = lq->rear->next;
lq->rear->data = x;
lq->rear->next = NULL;
return;
}
}
datatype DeQueue(linkqueue *lq)
{
linklist q;
{
linklist q;
q = lq->front;
lq->front = q->next;
free(q);
lq->front = q->next;
free(q);
return (lq->front->data);
}
}
void ClearQueue(linkqueue *lq)
{
linklist q;
{
linklist q;
while (lq->front != lq->rear)
{
q = lq->front;
lq->front = q->next;
free(q);
}
{
q = lq->front;
lq->front = q->next;
free(q);
}
return;
}
}