-
实现思想:用静态数组存放数据元素,并设置队头(front/rear)指针。通过运算(取余)将存储空间在逻辑上变为“环状”。
-
重要考虑因素:
- 如何初始化、入队、出队;
- 如何判空、判满;
- 如何计算队列的长度。
-
rear 指向:rear 指向队尾元素后一个位置。
-
分析思路:
- 确定 front、rear 指针的指向;
- 确定判空、判满的方法。
-
判空、判满方法:
- a. 牺牲一个存储单元:当 rear 指向队尾元素下一个位置时,front 和 rear 相等表示队列为空;当 (rear+1)%MaxSize == front 时,表示队列已满。
- b. 增加 size 变量记录队列长度:size 为零表示队列为空,达到 MaxSize 表示队列已满。
- c. 增加 tag = 0/1 用于标记最近的一次操作是出队/入队。
-
思考:分别采用策略①a、①b、①c 或者策略②a、②b、②c 时,这些操作怎么实现?
-
循环队列的初始化:通常情况下,我们将 front 和 rear 初始化为 -1 或者 0,具体取决于所选择的判空、判满方法。
-
入队操作:当队列未满时,将新的元素存放到 rear 所指的位置,然后将 rear 加 1 并对数组大小取余,以保持环形结构。
-
出队操作:当队列非空时,取出 front 所指位置的元素,然后将 front 加 1 并对数组大小取余。
-
计算队列长度:根据所选的判空、判满方法,可以通过 size 变量或者比较 front 和 rear 来计算当前队列中的元素数量。
数据结构笔记之队列的顺序实现
最新推荐文章于 2024-08-26 23:02:40 发布