问一道数据结构的选择题
若数组A[0…m][0…n]按列优先顺序存储,则aij地址为( )。
A.LOC(a00)+[j*m+i] B. LOC(a00)+[j*n+i]
C.LOC(a00)+[(j-1)*n+i-1] D. LOC(a00)+[(j-1)*m+i-1]
答案是A,但我选的是D。可以解释一下为什么是A吗?
[解决办法]
是A啊 下标识从0开始的,无须-1
[解决办法]
楼上说得对,你选d,如果i=0,j=0,偏移地址不就为负了吗?
[解决办法]
其实做选择可以用特例法啊
不过建立楼主最好在纸上画画看看,毕竟直观的现实比计算来的更好
[解决办法]
A[0...m]
如果是C语言,定义的时候 A[m+1];有m+1个元素,第一个元素是A[0],最后一个A[m]
[解决办法]
答案是B。
如果是按行优先的(通常都是)
计算方法为 A首地址 + (i*m+j)
而按列优先,明显就应该是
A首地址 + (j*n+i)
[解决办法]
题目都没清……