这种题目都可以自己总结个公式出来的
数据元素占k存储单元,首地址为a,则对于A[M][N]中元素A[i][j]的地址:
对于以行序为主的存储方式:
一行占N*k存储单元A[i][j]是在上面i个行的基础上加上第i+1行1列到j+1列的地址
A[i][j] =i*N*k + j*k + a
对于以列序为主的
同理有A[i][j] = j*M*k + i*k + a
故上面的答案是array[5][5] = 5*100*2+5*2+10=1020
设二维数组的行下标区间[l1,h1],列下标[l2,h2]。
按行优先:
LOC(Aij) = LOC(A[l1,l2]) + ( (i - l1) * ( h2 - l2 + 1) + ( j - l2) ) *C (C为单个数据元素所占空间);
按列优先:
LOC(Aij) = LOC(A[l1,l2]) +( ( j - l2) * ( h1 - l1+ 1) + ( i - l1) ) *C (C为单个数据元素所占空间);
授之以鱼,不如授之以渔。
楼主你的这个“A=array[0...100,0...100]”是什么意思?
如果定义数组应该是array[100][100]
这下一楼就应该没有疑问了:每行是从0~99共100个元素而不是101个。
(100*5+5)*2+10=1020
但我觉得数组的列数为101应该这么算:(101*5+5)*2+10=1030
有人知道告诉我一下。 或者等楼主的老师讲了后告诉我。