首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

问一道数据结构的选择题,该如何处理

2012-03-09 
问一道数据结构的选择题若数组A[0…m][0…n]按列优先顺序存储,则aij地址为()。A.LOC(a00)+[j*m+i]B. LOC(a00)

问一道数据结构的选择题
若数组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)

[解决办法]

题目都没清……


探讨
答案是B。


如果是按行优先的(通常都是)
计算方法为 A首地址 + (i*m+j)

而按列优先,明显就应该是
A首地址 + (j*n+i)

[解决办法]
此为m行n列的数组,列优先,则存储aij时首先从0到j-1这些列已经存满,总共j列共j*m,又第j列已经存储了0到i-1共i个数据,所以aij的地址为loc(aij)=loc(a00)+(j*m+i),即答案为A。
[解决办法]
搞错了,哈哈 是A
[解决办法]
行优先:aij = i * n + j
列有限:aij = j * m + i 
探讨
答案是B。


如果是按行优先的(通常都是)
计算方法为 A首地址 + (i*m+j)

而按列优先,明显就应该是
A首地址 + (j*n+i)

[解决办法]
其实这个不用记公式的,到时自己画个二维图,推推就行了。

热点排行