#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
typedef int ElemType;
typedef struct LinkNode
{
ElemType data;
struct LinkNode *next;
} LinkNode;
typedef struct LinkQueue
{
LinkNode *front, *rear;
} LinkQueue;
void InitLinkQueue(LinkQueue Q){
Q.front = Q.rear = (LinkNode *)malloc(sizeof(LinkNode));
Q.front->next = NULL;
}
void IsEmptyLinkQueue(LinkQueue Q){
if (Q.front == Q.rear)
return true;
else
return false;
}
void EnLinkQueque(LinkQueue Q, ElemType e){
LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode));
if (s == NULL)
return false;
s->data = e;
s->next = NULL;
Q.rear->next = s;
Q.rear = s;
}
void DeLinkQueue(LinkQueue Q, ElemType e){
if (Q.front == Q.rear)
return false;
LinkNode *temp = Q.front->next;
e = temp->data;
Q.front->next = temp->next;
if (Q.rear == temp)
Q.rear = Q.front;
free(temp);
return true;
}