数据结构学习笔记-18

队列的链式存储结构

typedef struct QNode {
    ElemType data;
    struct QNode *next;
} QNode, *QueuePrt;

typedef struct {
    QueuePrt front, rear;//队头尾指针
}LinkQueue;

initQueue(LinkQueue *q)
{
    q->front = q->rear = (QueuePrt)malloc(sizeof(QNode));
    if( !q->front)
        exit(0);
    q->front->next = NULL;
}

insertQueue(LinkQueue *q, ElemType e)
{
    QueuePrt p;
    p = (QueuePrt)malloc(sizeof(QNode));

    if( p == NULL)
        exit(0);
    p->data = e;
    p->next = NULL;
    q->rear->next = p;
    q->rear = p;
}

DeleteQueue(LinkQueue *q, ElemType *e)
{
    QueuePrt p;
    if( q->front == q->rear )
        return;
    p = q->front->next;
    *e = p->data;
    q->front->next = p->next;

    if( q->rear == p)
        q->rear = q->front;

    free(p);

}

DestroyQueue(LinkQueue *q)
{
    while( q->front )
    {
        q->rear = q->front->next;
        free( q->front );
        q->front = q->rear;
    }
}