若循环队列以数组Q[0,…,m-1]作为其存储结构,变量rear表示循环队列中队尾元素的实际位置,其移动按rear=(rear+1)mod m进行,变量length表示当前循环队列中的元素个数,则循环队列的队首元素的实际位置是(23)。

admin2019-06-12  26

问题 若循环队列以数组Q[0,…,m-1]作为其存储结构,变量rear表示循环队列中队尾元素的实际位置,其移动按rear=(rear+1)mod m进行,变量length表示当前循环队列中的元素个数,则循环队列的队首元素的实际位置是(23)。

选项 A、rear-length
B、(rear-length+m)mod m
C、(1+rear+m-length)mod m
D、m-length

答案C

解析 其实这种题目在考场上最好的解题方法是找一个实际的例子,往里面一套便知道了。下面解释一下原理。因为rear表示的是队列尾元素的实际位置(注意,不是队尾指针)。而且题中有“移动按rear=(rear+1)mod m进行”,这说明:队列存放元素的顺序为: Q[1],Q[2],…,Q[m-1],Q[0]。所以在理想情况下rear-length+1能算出队首元素的位置,即当m=8,rear=5,length=2时,rear-length+1=4,4就是正确的队首元素实际位置。但rear-length+1有一种情况无法处理,即当m=8,rear=1,length=5时,无法算出。
    所以在rear+1-length的基础上加上m再与m求模,以此方法来计算。
转载请注明原文地址:https://kaotiyun.com/show/wKRZ777K
0

最新回复(0)