//Link Queue Implement
typedef struct QNode
{
Type data;
QNode *pNext;
}QNode,*QuePtr;
typedef struct
{
QuePtr front;
QuePtr rear;
}LinkQuene;
bool InitQuene(LinkQuene& Q)
{
Q.front = Q.rear = (QuePtr)malloc(sizeof(QNode));
if (Q.front==NULL)
{
return false;
}
Q.front->pNext = NULL;
return true;
}
bool EnQuene(LinkQuene& Q,Type e)
{
QuePtr node = (QuePtr)malloc(sizeof(QNode));
if (node==NULL)return false;
node->data = e;
node->pNext=NULL;
Q.rear->pNext = node;
Q.rear = node;
return true;
}
bool DeQuene(LinkQuene& Q,Type& e)
{
if (Q.rear==Q.front)return false;
QuePtr q = Q.front;
q = q->pNext;
e = q->data;
QuePtr temp = q;
Q.front->pNext = q->pNext;
free(temp);
return true;
}
bool DestroyQueue(LinkQuene& Q)
{
while (Q.front)
{
Q.rear = Q.front->pNext;
free(Q.front);
Q.front = Q.rear;
}
return true;
}