数据结构——队列的顺序存储结构
队列的顺序存储是用一段连续的内存空间(如数组)来存放队列元素,并通过**队头指针front
和队尾指针rear
**标记队列的头尾位置。这种基于数组的实现称为“顺序队列”,但直接使用数组会面临“假溢出”问题,因此通常需优化为“循环队列”。
1. 顺序队列的基本结构与操作
顺序队列以数组data
存储元素,front
通常指向队头元素的前一个位置,rear
指向队尾元素的位置。初始时,队空状态下front
与rear
重合(如图3.6(a),两者都指向数组起始位置,队列无元素)。
- 入队:新元素放入
rear
指向的位置,随后rear
向后移动一位; - 出队:
front
向后移动一位,跳过队头元素。
如图3.6(b),5个元素a、b、c、d、e
依次入队后,rear
指向数组第5个位置(元素e
的位置),front
指向数组起始位置(元素a
的前一位);图3.6©是出队1次后的状态,front
后移一位,跳过原队头元素a
;图3.6(d)是出队3次后的状态,front
已接近rear
。
用代码定义顺序队列结构(以C语言为例):
#define MaxSize 100 // 队列最大容量
typedef struct {ElemType data[MaxSize]; // 存储队列元素的数组int front, rear