上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++]。
说 明
在队列中,队满指的是元素占据了队列中的所有存储空间,没有空闲的存储空间可以插入元素。队空指的是队列中没有一个元素,也称为空队列。