顺序队列指的是用顺序表模拟实现的队列存储结构。
我们知道,队列具有以下两个特点:
- 数据从队列的一端进,从另一端出;
- 数据的入队和出队遵循"先进先出"的原则;
在顺序表的基础上,只要元素进出的过程遵循以上两个规则,就能实现队列结构。
顺序队列的具体实现
通常情况下,我们采用 C 语言中的数组实现顺序表。既然用顺序表模拟实现队列,必然要先定义一个足够大的数组。不仅如此,为了遵守队列中数据从 "队尾进,队头出" 且 "先进先出" 的规则,还需要定义两个变量(top 和 rear)分别记录队头和队尾的具体位置,如图 1 所示:
图 1 顺序队列实现示意图
初始状态下,顺序队列中没有任何元素,因此 top 和 rear 重合,都位于 a[0] 处。
实现入队
在图 1 的基础上,当有新元素入队时,依次执行以下两步操作:
- 将新元素存储在 rear 记录的位置;
- 更新 rear 的值(rear+1),记录下一个空闲空间的位置,为下一个新元素入队做好准备。
例如,在图 1 基础上将 {1,2,3,