数据结构问题,求解答,谢谢!

6. 二维数组A按行优先顺序存储,其中每个元素占1个存储单元。若A[1][1]的存储地址为420,A[3][3]的存储地址为446,则A[5][5]的存储地址为多少?

答案 : 472

行优先存储明白吗?就是一行一行的存,不是一列一列的存。
题目告诉了A[1][1]和A[3][3]的存储地址,是想让你推算出A数组的大小。由于A[1][1]的地址是420,所以A[1][0]的地址就是419,还有A[3][3]的地址是446,那么A[3][0]的地址就是443。从A[1][0]到A[3][0],恰好实用了2行,(443-419)/ 2 = 12,也就是说数组A的大小是A[12][N],N没必要算出来,也算不出来。这样就知道了A[5][0]的地址是 419 + 12 * 4 = 467,那么A[5][5]就是467+5 = 472 了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-07
先根据A[3][3]的地处可以知道有12列,466=420+((3-1)*x+3-1)*1 所以x=12;
然后根据按行存储公式LOC[I,J]=10+((I-1))*n+j-1)*L;
可以得到A[5][5]=420+((5-1)*12+5-1)*1=472;
第2个回答  2011-07-08
行存储,Loc(A[3][3])=Loc(A[1][1])+((3-1)×n+(3-1))*L
=420+2n+2
Loc(A[3][3])=446.这样,n=8

Loc(A[5][5])=])=Loc(A[1][1])+((5-1)×8+(5-1))*1=420+36=456
相似回答