數據結構期末復習第五章 數組和廣義表
二維數組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。