单选题
设有二维数组A[1:U1,1:U2],已知数据元素A[1,1]在位置2,A[2,3]在位置18,A[3,2]在位置28,则元素A[4,5]在位置( )。
【正确答案】
A
【答案解析】题目中没有给出该数组是行优先存储还是列优先存储,因此需要首先判断数组的存储方式。
因为Loc(A[3,2])>Loc(A[2,3]),所以数组一定是按行存储的。
因为A[1,1]是起始位置,则有L1-2。利用已知条件,根据计算地址的公式有:
Loc(A[2,3])=L1+(2-1)×U2×d+(3-1)×d-18,即
2+U2×d+2×d=18 (方程1)
Loc(A[3,2])=L1+(3-1)×U2×d+(2-1)×d-28,即
2+2×U2×d+d-28 (方程2)
由以上两方程联立,得方程组,解得:U2=6,d=2。由此得到数组A的列数为6,每个元素占2个空间。则:
Loc(A[4,5])=L1+(4-1)×U2×d+(5-1)×d
-2+3×6×2+4×2=46
可以看出,该题目中仅仅求得了列数U2和每个数据元素所占的空间数就求得了某个数据元素的地址,而行数U1并没有求得。这再次说明,在行优先为主的存储方式中,列数是不可或缺的。