题目
循环队列存储在数组A[0..m]中,则入队时的操作为( )。A. rear=rear+1B. rear=(rear+1)%(m-1)C. rear=(rear+1)%mD. rear=(rear+1)%(m+1)
循环队列存储在数组A[0..m]中,则入队时的操作为( )。
A. rear=rear+1
B. rear=(rear+1)%(m-1)
C. rear=(rear+1)%m
D. rear=(rear+1)%(m+1)
题目解答
答案
D. rear=(rear+1)%(m+1)
解析
循环队列的核心在于利用数组的首尾相连特性,避免“假溢出”。入队操作时,队尾指针rear需要循环递增。关键点在于:
- 数组大小为
m+1(题目中数组为A[0..m]); - 模运算的基数应为数组总长度
m+1,确保rear始终在有效范围内循环。
选项分析
-
选项A:
rear=rear+1
未取模,会导致rear超出数组范围,错误。 -
选项B:
rear=(rear+1)%(m-1)
基数m-1错误,数组实际长度为m+1,错误。 -
选项C:
rear=(rear+1)%m
基数m错误,未考虑数组末尾索引m,错误。 -
选项D:
rear=(rear+1)%(m+1)
基数m+1正确,确保rear循环在0到m之间,正确。
关键结论
- 循环队列的入队操作需通过
(rear+1)%(m+1)更新队尾指针,保证指针在数组范围内循环。