数据结构期末复习第五章 数组和广义表
二维数组A[m][n]按行优先 寻址计算方法,每个数组元素占据d 个地址单元。
设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((i-1)*n+j-1)*d
设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( i*n+j )*d
二维数组A[m][n]按列优先 寻址计算方法,每个数组元素占据d 个地址单元。
设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((j-1)*m+i-1)*d
设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( j*m+i)*d
1. 二维数组A的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若A按行先存储,元素A[8,5]的起始地址与当A按列先存储时的元素( B )的起始地址相同。设每个字符占一个字节。
A. A[8,5] B. A[3,10]
C. A[5,8] D. A[0,9]
解析:元素A[8,5]的起始地址与当A按列先存储时的A[i,j]元素的起始地址相同,
即8×10+5—1=(j一1)×9+i,将四个备选答案代入,可得正确答案
我的理解:
本题中:
二维数组A[9,10]按行优先寻址计算方法,每个元素六个字符,每个数组元素占据4个地址单元,
设数组的基址为LOC(0,1):LOCA(8,5)=LOC(a01)+((8*10)+(5-1))*6*1
二维数组A[9,10]按列优先寻址计算方法,每个元素六个字符,每个数组元素占据4个地址单元,
设数组的基址为LOC(0,1):LOCA(i,j)=LOC(a01)+((j-1)*9+i)*6*1
元素A[8,5]的起始地址与当A按列先存储时的A[i,j]元素的起始地址相同,
即:LOC(8,5)=LOC(i,j)
((8*10)+(5-1))*6*1=((j-1)*9+i)*6*1
84 *6*1=((j-1)*9+i) *6*1
84=(j-1)*9+i
将四个备选答案代入,可得正确答案B
2. 二维数组N的每个元素占4个存储单元,行下标i的范围从0到4,列下标j的范围从0到5,N按行存储时元素N[3][5]的起始地址与N按列存储时元素( B )的起始地址相同。
A. N[2][4] B. N[3][4]
C. N[3][5] D. N[4][4]
分析:
行下标i的范围从0到4,列下标j的范围从0到5说明数组为二维数组A[5][6]
元素N[3,5]的起始地址与当N按列先存储时元素的起始地址相同,
即3*6+5=j*5+i,将四个备选答案代入,可得正确答案B
具体分析方法同上。
3. 设n阶方阵是一个上三角矩阵,则需存储的元素个数为( D )
A .n B .n*n
C .n*n/2 D .n(n+1)/2
解析:
1 2 3 4 5 6 7 8 ... n
1 1 1 1 1 1 1 1 ... 1 个数为n
0 1 1 1 1 1 1 1 ... 1 个数为n-1
0 0 1 1 1 1 1 1 ... 1 个数为n-2
0 0 0 1 1 1 1 1 ... 1 个数为n-3
... ...
0 0 0 0 0 0 0 0 ... 1 个数为1
需要存储的元素个数为:
n+(n-1)+...+2+1 = n(n+1)/2
4. 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85(即该元素下标ij=85)的地址为( B )。
A. 13 B. 33 C. 18 D. 40
解析:
这里数组下标从1开始,只存储其下三角形元素,在a8,5的前面有7行,第1行有1个元素,第2行有2个元素,…,第7行有7个元素,这7行共有(1+7)×7/2=2 8个元素,在第8行中,a8,5的前面有4个元素,所以,a8,5前有28+4=32个元素,其地址为33。
--------------------------------
1 2 3 4 5 6 7 9 9 3
2 3 4 5 6 7 8 9 3 4
3 4 5 6 7 8 9 3 4 2
4 5 6 7 8 9 3 4 2 6
5 6 7 8 9 3 4 2 6 8
6 7 8 9 3 4 2 6 8 3
7 8 9 3 4 2 6 8 3 4
8 9 3 4 2 6 8 3 4 2
9 3 4 2 6 8 3 4 2 5
3 4 2 6 8 3 4 2 5 6
-----------------------------------------
5. 若对n阶对称矩阵A[1..n,1..n]以行序为主序方式下将其下三角的元素(包括主对角线上的所有元素)依次存放于一维数组B[1..n(n+1)/2]中,则在B中确定aij (i<j)的位置k的关系为( B )。
A .i*(i-1)/2+j B .j*(j-1)/2+i
C .i*(i+1)/2+j D .j*(j+1)/2+i
解析:
对称矩阵A中的下三角的元素存放于B数组中,
若求aij(i>j)的位置k的关系,答案为A,即i(i一1)/2+j。
但是,本题求aij (i<j)这就需要将备选答案A中i(i一1)/2+j的i与j互换,
因此正确答案为B,即j(j一1)/2+i。