问个问题。。关于PASCAL的指针

来源:百度知道 编辑:UC知道 时间:2024/05/25 22:51:06
8.设循环队列中数组的下标范围是1–n,其头尾指针分别为f和r,则其元素个数为( ).
A.r- f B.r- f +1
C.(r- f ) MOD n+1 D.(r- f + n) MOD n

答案是D

能否详细讲解一下为什么?
指针到底是什么?

我晕 你还没搞懂啊 :

这里的指针就是一个integer变量
不是真正的指针

正常情况下(非循环队列)
尾指针的数值比头指针大
元素个数就应该是r-f+1

但是因为是循环队列
所以尾指针的数值有可能比头指针小
原式就是负值
C (r- f ) MOD n+1
由于 mod 运算的结果和 mod前面的那个数的符号相同
C 项同样有可能导致结果为负
所以就是D