
队列的链式存储结构
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;
}
}
近期评论