假设循环队列数组长度为 $N$,其中队空判断条件为:front == rear,队满判断条件为:(rear + 1) % N == front,出队对应的操作为:front = (front + 1) % N,入队对应的操作为:rear = (rear + 1) % N。循环队列长度 $N = 6$,初始 front = 1,rear = 1,执行操作序列为:入队,入队,入队,出队,入队,入队,则最终 (front, rear) 的值是( )。
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。
【考点】循环队列队空队满判断|模运算边界处理|队列状态模拟
本题考查循环队列核心实现细节,对应 GESP 六级《数据结构与算法》模块。命题人卡住的是考生对队空队满条件的混淆——front=rear 与 (rear+1)%N=front 看似对称实则代表不同状态,这是六级队列题的经典陷阱。
初始 front=rear=1 且队列判空条件为 front==rear,说明初始状态队列为空。依次执行:入队使 rear 变为 2、3、4;出队使 front 变为 2;再入队使 rear 变为 5、0(6%6=0)。最终 front=2, rear=0,对应选项 B。
错误选项 C 和 D 源于忽略模运算的"归零"特性——当 rear+1=N 时 (rear+1)%N=0,考生易误以为 rear 保持为 6 或 5。选项 A 则混淆了队空条件:front=2, rear=0 时 (rear+1)%N=1≠front,队列已满,但考生若按普通队列思维会误判为空。命题人利用"绝对化"表述(如 front==rear 一定为空)制造认知陷阱。
若将队空条件改为 rear==front+1,或把队满条件设为 rear==front,答案会完全逆转。提醒:遇到循环队列题,先默写队空队满公式,再按操作顺序模拟,别靠直觉跳步。