目录
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
与栈相反,队列是一种先进先出(First In First Out ,FIFO)的线性表。
同时,队列也是一种重要的线性结构,实现一个队列同样需要顺序表或链表作为基础。
创建一个队列
要完成两个任务
1、在内存中创建一个头节点,
2、将队列的头指针和尾指针都指向这个生成的头节点。
initQueue (LinkQueue *q)
{
q->front = q-> rear =(QueuePtr *) malloc(sizeof(QNode));
if(!q->front)
exit(0);
q->front->next=NULL;
}
入列队操作
InsertQueue(LinkQueue *q,ElemType e)
{
QueuePtr p;
p = (QueuePtr)malloc(sizeof(QNode));
if(p==NULL)
exit(0);
p->data=e;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
出列队操作
DeleteQueue(LinkQqueue *q,ElemType *e)
{
QueuePtr p;
if(q->front == p->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;
}
}