資料結構期末複習第五章 陣列和廣義表
二維陣列a[m][n]按行優先 定址計算方法,每個陣列元素佔據d 個位址單元。1. 二維陣列a的每個元素是由6個字元組成的串,其行下標i=0,1,…,8,列下標j=1,2,…,10。若a按行先儲存,元素a[8,5]的起始位址與當a按列先儲存時的元素( b )的起始位址相同。設每個字元佔乙個位元組。設陣列的基址為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
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個位址單元,元素a[8,5]的起始位址與當a按列先儲存時的a[i,j]元素的起始位址相同,設陣列的基址為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
即: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
將四個備選答案代入,可得正確答案
b2. 二維陣列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
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
)這就需要將備選答案a中i(i一1)/2+j
的i與j互換,
因此正確答案為b,即j(j一1)/2+i。
軟體構造期末複習 第五章
軟體的可維護性 錯誤修復 改善效能 度量方法。原則方法 目標 設計方法 耦合與內聚 模組之間聯絡越多,耦合度越高 應高內聚,低耦合 著重符號 單一責任原則 每個模組 類 不應因為超過乙個原因而發生改變 乙個類應只完成一種需求 一類操作 開放封閉原則 著重中著重符號 liskov替換原則 保證子類能夠...
廣工 AnyviewC 資料結構習題 第五章
g m,n 0 當m 0,n 0 g m,n g m 1,2n n 當m 0,n 0intg int m,int n 如果 m 0 或 n 0 則返回 1 f n n 1 當n 0 f n nf n 2 當n 0intf int n 如果 n 0 則返回 1 sqrt a,p,e p 當 pp a ...
資料結構(第五章)
樹下 第一講一.堆 什麼是堆?在講堆之前,我們先看看什麼是優先佇列。優先佇列 是一種特殊的佇列,從名稱上看,優先,顧名思義,取出的元素是按照一定的優先順序出隊的,而不是元素進入佇列的先後順序。優先佇列的完全二叉樹表示 堆的兩個特性 結構性 用陣列表示的完全二叉樹。有序性 任一結點的關鍵字是其子樹所有...