Skip to content

循环队列操作

题目要求

假设使用长度为11的数组作为顺序队列,初始为空。请绘制完成以下操作后的队列示意图,并说明元素无法入队的原因。

操作序列

  1. A, B, C, D, E 依次入队
  2. A, B 依次出队
  3. F, G, H, I, J 依次入队
  4. O, P, Q, R 依次入队

参考答案与解析

一、循环队列操作示意图

步骤操作类型队列状态(索引0-10)关键参数
1A-E入队[A, B, C, D, E, -, -, -, -, -, -]front=0, rear=5
2A-B出队[-, -, C, D, E, -, -, -, -, -, -]front=2, rear=5
3F-J入队[-, -, C, D, E, F, G, H, I, J, -]front=2, rear=10
4O-P入队[P, -, C, D, E, F, G, H, I, J, O]front=2, rear=1

注:- 表示空位,字母表示已存储元素


二、关键操作解析

1. 初始状态

  • 数组长度:11(索引0-10)
  • 初始指针:front = 0, rear = 0
  • 队列状态:空队列

2. 操作(1)A-E入队

  • 入队规则:rear = (rear + 1) % 11
  • 元素存储位置:索引0→4依次存放A-E
  • 最终状态:front=0, rear=5

3. 操作(2)A-B出队

  • 出队规则:front = (front + 1) % 11
  • 指针变化:A出队后front=1,B出队后front=2
  • 存储变化:实际存储元素为C(索引2), D(3), E(4)

4. 操作(3)F-J入队

  • rear移动轨迹:5→6→7→8→9→10
  • 新增元素位置:索引5-9依次存放F-J
  • 最终状态:front=2, rear=10

5. 操作(4)O-R入队

  • O入队:存入索引10,rear=0
  • P入队:存入索引0,rear=1
  • Q/R阻塞:此时 (rear+1)%11 = (1+1)%11 = 2front=2 相等,触发队列满条件

核心知识点

循环队列特性

  1. 队列满条件(rear + 1) % maxsize == front
  2. 空间利用率:长度为n的数组最多存储n-1个元素
  3. 指针移动规则
    • 入队:rear = (rear + 1) % maxsize
    • 出队:front = (front + 1) % maxsize

本题关键数据

  • maxsize = 11
  • 最大容量 = 10元素
  • 预留空间作用:区分队列满/空状态(均为front=rear时,空队列与满队列的判断依据不同)