目录
创建一个队列
入列队操作
出列队操作
销毁一个队列
队列(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;}
}