单选题
设有二维数组A[1:U
1
,1:U
2
],已知数据元素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]是起始位置,则有L
1
-2。利用已知条件,根据计算地址的公式有:
Loc(A[2,3])=L
1
+(2-1)×U
2
×d+(3-1)×d-18,即
2+U
2
×d+2×d=18 (方程1)
Loc(A[3,2])=L
1
+(3-1)×U
2
×d+(2-1)×d-28,即
2+2×U
2
×d+d-28 (方程2)
由以上两方程联立,得方程组,解得:U
2
=6,d=2。由此得到数组A的列数为6,每个元素占2个空间。则:
Loc(A[4,5])=L
1
+(4-1)×U
2
×d+(5-1)×d
-2+3×6×2+4×2=46
可以看出,该题目中仅仅求得了列数U
2
和每个数据元素所占的空间数就求得了某个数据元素的地址,而行数U
1
并没有求得。这再次说明,在行优先为主的存储方式中,列数是不可或缺的。