数据结构习题精解(C语言实现+微课视频)
上QQ阅读APP看书,第一时间看更新

3.4.1 队列的定义和术语

队列(Queue):一种先进先出(First In First Out,FIFO)的线性表,它只允许在表的一端插入元素,而在另一端删除元素。

队头(Front):允许删除的一端称为队头。通常用front表示队头指针。

队尾(Rear):其中,允许插入的一端叫作队尾。通常用rear表示队尾指针。

例如,假设有一个队列q=(a1,a2,…,ai,…,an),那么a1就是队头元素,an则是队尾元素。进入队列时,是按照a1、a2、…、an的顺序依次进入的;退出队列时,按照元素进入队列的优先顺序退出,即只有当队列中前面的元素都退出之后,后面的元素才能退出。因此,只有当a1、a2、…、an-1都退出队列以后,an才能退出队列。队列的示意图如图3-14所示。

图3-14 队列

注 意

顺序循环队列中的入队操作和出队操作都要取模,确保操作不出界。循环队列长度即元素个数为(SQ.rear+QueueSize-SQ.front)%QueueSize。

顺序队列的类型描述如下:

假设Q是一个队列,若不考虑队满,则入队操作语句为Q.queue[rear++]=x;若不考虑队空,则出队操作语句为x=Q.queue[front++]。

说 明

在队列中,队满指的是元素占据了队列中的所有存储空间,没有空闲的存储空间可以插入元素。队空指的是队列中没有一个元素,也称为空队列。