typedef struct qnode
{
ElemType data;
struct qnode * node;
}QNode;
typedef struct
{
QNode * front;
QNode * rear;
}LiQueue;
void InitQueue(LiQueue * &lqu)
{
lqu = (LiQueue * )malloc(sizeof(LiQueue));
lqu -> front = lqu -> rear = NULL;
}
int QueueEmpty(LiQueue * lqu)
{
return(lqu -> rear == NULL)
}
void EnQueue(LiQueue * &lqu,ElemType x)
{
QNode * p;
p = (QNode * )malloc(sizeof(QNode));
p -> data = x;
p -> next = NULL;
if(lqu -> rear == NULL)
lqu -> front = lqu -> rear = p;
else
{
lqu -> rear -> next = p;
lqu -> rear = p;
}
}
int DeQueue(LiQueue * &lqu,ElemType &x)
{
QNode * p;
if(lqu -> rear == NULL)
return 0;
p = lqu -> front;
if(lqu -> front == lqu -> rear)
lqu -> front = lqu -> next = NULL;
else
lqu -> front = lqu -> front -> next;
x = p -> data;
free(p);
return 1;
}