typedef struct QNode
{
QElemType data;
struct QNode* next;
}QNode *QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
链队列的初始化
//链队列的初始化
Status InitQueue(LinkQueue)
{
Q.front = Q.rear = new QNode;
if (!Q.front) exit(OVERFLOW);
Q.front->next = NULL;
return 0;
}
链队列的销毁
//链队列的销毁
Status DestroyQueue(LinkQueue& Q)
{
while (Q.front) {
p = Q.front->next;
delete Q.front;
Q.front = p;
}
return 0;
}
链队列的销毁(Q.rear代替p)
Status DestroyQueue(LinkQueue& Q)
{
while (Q.front)
{
Q.rear = Q.front->next;
delete Q.front;
Q.front = Q.rear;
}
return 0;
}
链队列的入队
Status EnQueue(LinkQueue& Q, QElemType e)
{
p = new QNode;
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return 0;
}
链队列的出队
Status DeQueue(LinkQueue& Q, QElemType &e)
{
if (Q.front = Q.rear) return ERROR;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if (Q.rear = p) Q.rear = Q.front;
delete p;
return 0;
}