版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——第5章數(shù)組和廣義表第五章數(shù)組和廣義表
講課提要
1.多維數(shù)組的順序存儲(chǔ)結(jié)構(gòu)2.特別矩陣的壓縮存儲(chǔ)
3.廣義表的定義及其與線性表的關(guān)系4.廣義表的存儲(chǔ)結(jié)構(gòu)
5.廣義表運(yùn)算實(shí)現(xiàn)中遞歸的應(yīng)用
1.把握多維數(shù)組的順序存儲(chǔ)結(jié)構(gòu)2.把握特別矩陣的壓縮存儲(chǔ)方法
3.把握廣義表的定義及其與線性表的關(guān)系4.把握廣義表的存儲(chǔ)結(jié)構(gòu)
5.了解廣義表運(yùn)算實(shí)現(xiàn)中遞歸的應(yīng)用
學(xué)習(xí)指導(dǎo)
1.多維數(shù)組的順序存儲(chǔ)結(jié)構(gòu)
對(duì)于多維數(shù)組,有兩種存儲(chǔ)方式:
一是以行為主序(或先行后列)的順序存放,如BASIC、PASCAL、C等程序設(shè)計(jì)語(yǔ)言中用的是以行為主的順序分派,即一行分派完了接著分派下一行。
另一種是以列為主序(先列后行)的順序存放,如FORTRAN語(yǔ)言中,用的是以列為主序的分派順序,即一列一列地分派。
以行為主序的分派規(guī)律是:最右邊的下標(biāo)先變化,即最右下標(biāo)從小到大,循環(huán)一遍后,右邊其次個(gè)下標(biāo)再變,?,從右向左,最終是左下標(biāo)。以列為主序分派的規(guī)律是:最左邊的下標(biāo)先變化,即最左下標(biāo)從小到大,循環(huán)一遍后,左邊其次個(gè)下標(biāo)再變,?,從左向右,最終是右下標(biāo)。
不管按何種方式存儲(chǔ),只要確定了數(shù)組的首地址以及每個(gè)數(shù)組元素所占用的單元數(shù),就可以將數(shù)組元素的存儲(chǔ)地址表示為其下標(biāo)的線性函數(shù)。設(shè)有m×n二維數(shù)組Amn,以“以行為主序〞的分派為例,依照元素的下標(biāo)確定其地址的計(jì)算方法如下。
設(shè)數(shù)組的基址為L(zhǎng)OC(a11),每個(gè)數(shù)組元素占據(jù)L個(gè)地址單元,計(jì)算aij的物理地址的函數(shù)為:
LOC(aij)=LOC(a11)+((i-1)*n+j-1)*L
同理,對(duì)于三維數(shù)組Amnp,即m×n×p數(shù)組,對(duì)于數(shù)組元素aijk其物理地址為:
LOC(aijk)=LOC(a111)+((i-1)*n*p+(j-1)*p+k-1))*L
注意:在C語(yǔ)言中,數(shù)組中每一維的下界定義為0,則:
LOC(aij)=LOC(a00)+(i*n+j)*L
二維數(shù)組A的每一個(gè)元素是由6個(gè)字符組成的串,其行下標(biāo)i=0,1,?,8,列下標(biāo)j=1,2,?,10。若A以行為主序存儲(chǔ)元素,A[8][5]的物理地址與當(dāng)A按列為主序存
儲(chǔ)時(shí)的元素()的物理地址一致。設(shè)每個(gè)字符占一個(gè)字節(jié)。
A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]
解:二維數(shù)A是一個(gè)9行10列的矩陣,即A[9][10]。按行存儲(chǔ)時(shí),A[8][5]是第85個(gè)元素存儲(chǔ)的元素。而按列存儲(chǔ)時(shí),第85個(gè)存儲(chǔ)的元素是A[3][10]。即正確答案為B。
2.特別矩陣壓縮存儲(chǔ)的意義
在好多科學(xué)計(jì)算與工程應(yīng)用中,經(jīng)常要使用矩陣的概念。矩陣具有與數(shù)組相像的性質(zhì),如元素?cái)?shù)目固定、元素按下標(biāo)關(guān)系有序地排列,所以在編程時(shí)可以利用二維數(shù)組來(lái)存儲(chǔ)矩陣,也可以利用程序設(shè)計(jì)語(yǔ)言中的各種矩陣運(yùn)算。
在某些狀況下,特別是在數(shù)值分析中,經(jīng)常會(huì)出現(xiàn)一些階數(shù)很高的矩陣,其中含有大量值一致的元素或零元素,如三角矩陣、對(duì)稱矩陣、稀疏矩陣等,從儉約存儲(chǔ)空間的角度考慮,此時(shí)若用二維數(shù)組存儲(chǔ)會(huì)造成空間的極大浪費(fèi)。為了節(jié)省存儲(chǔ)空間,可以對(duì)這類矩陣進(jìn)行壓縮存儲(chǔ)。即為對(duì)多個(gè)一致值的元素只分派一個(gè)存儲(chǔ)空間,而對(duì)零元素可以不分派空間。
3.對(duì)稱矩陣壓縮存儲(chǔ)的方法
對(duì)稱矩陣的特點(diǎn)是:在一個(gè)n階方陣中,有aij=aji,其中1≤i,j≤n。對(duì)稱矩陣關(guān)于主對(duì)角線對(duì)稱,因此只需存儲(chǔ)上三角或下三角部分即可。
對(duì)于對(duì)稱矩陣中的任意元素aij,若令I(lǐng)=max(i,j),J=min(i,j),則將上面兩個(gè)式子綜合起來(lái)得到:k=I*(I-1)/2+J-1。給出對(duì)稱矩陣A中任意元素aij,依據(jù)它的下標(biāo)i和j就可由上述對(duì)應(yīng)關(guān)系式確定其在數(shù)組M中的位置K,因此aij的地址可由下式計(jì)算。
Loc(aij)=Loc(M[K])=Loc(M[0])+K*L=Loc(M[0])+[I*(I+1)/2+J]*L其中:L為每個(gè)數(shù)據(jù)元素所占的存儲(chǔ)單元長(zhǎng)度。I=max(i,j)。J=min(i,j)。K=I*(I+1)/2+J。
若對(duì)n階對(duì)稱矩陣A以行序?yàn)橹餍蚍绞綄⑵湎氯切蔚脑兀òㄖ鲗?duì)角線上所有元素)依次存放于一維數(shù)組B[n(n+1)/2]中,則在B中確定的位置k的關(guān)系為()。
A.
i*(i?1)j*(j?1)i*(i?1)j*(j?1)?jB.?iC.?jD.?i2222解:假使aij按行存儲(chǔ),那么它的前面有i-1行,其有元素個(gè)數(shù)為:
1+2+3+…+(i-1)=i(i-1)/2。同時(shí)它又是所在行的第j列,因此它排列的順序還得加上j,一維數(shù)組B[n(n+1)/2]中的位置k與其下標(biāo)的關(guān)系是:
i*(i?1)?j。2因此答案為A。
4.三角矩陣壓縮存儲(chǔ)的方法
形如圖的矩陣稱為三角矩陣,其中c為某個(gè)常數(shù)。其中下面圖(a)為下三角矩陣:主對(duì)角線以上均為同一個(gè)常數(shù);(b)為上三角矩陣,主對(duì)角線以下均為同一個(gè)常數(shù);下面探討它們的壓縮存儲(chǔ)方法。
3cccc34810
62cccc2946
481cccc157
7460cccc08
cccc782957
(a)下三角矩陣(b)上三角矩陣圖4-1三角矩陣
三角矩陣中的重復(fù)元素c可以共享一個(gè)存儲(chǔ)空間,其余的元素有n(n+1)/2個(gè),因此可壓縮存儲(chǔ)到向量sa[0..n(n+1)/2]中,c存放在向量的最終一個(gè)分量中,排列時(shí)以行序?yàn)橹?。aij和sa[k]的對(duì)應(yīng)關(guān)系是:下三角矩陣:
i*(i-1)/2+j-1當(dāng)i≥jk=n*(n+1)/2-1當(dāng)ij
已知n階下三角矩陣A,依照壓縮存儲(chǔ)的思想,可以將其主對(duì)角線以下所有元素(包括主對(duì)角線上元素)依次存放于一維數(shù)組B中。請(qǐng)寫(xiě)出從第一列開(kāi)始以列序?yàn)橹餍蚍峙煞绞綍r(shí)在B中確定元素aij的存放位置的公式。
解:假使aij按列存儲(chǔ),那么它的前面有j-1列,共有元素:n+(n-1)+(n-2)+?+[n-(j-2)]=(j-1)*n-
(j?2)(j?1)
2而它又是所在列的第i行,因此在它前的元素個(gè)數(shù)還得加上i。因此它在一維數(shù)組B中的存儲(chǔ)順序?yàn)椋?/p>
(j-1)*n-
(j?2)(j?1)+i
25.稀疏矩陣及其壓縮存儲(chǔ)的特點(diǎn)
設(shè)m*n矩陣中有t個(gè)非零元素且t=j),在一維數(shù)組B的下標(biāo)位置k的值是(B)。
A.i(i-1)/2+j-1B.i(i-1)/2+jC.i(i+1)/2+j-1D.i(i+1)/2+j13、廣義表A=((a),a)的表頭是(B)。
A.aB.(a)C.bD.((a))14、稀疏矩陣一般的壓縮存儲(chǔ)方法有兩種,即(C)。
A.二維數(shù)組和三維數(shù)組B.三元組和散列C.三元組和十字鏈表D.散列和十字鏈表
15、假設(shè)以三元組表表示稀疏矩陣,則與如下圖三元組表對(duì)應(yīng)的4×5的稀疏矩陣是(注:矩陣的行列下標(biāo)均從1開(kāi)始)(B)。
?0?8?0?7A.?00???50??0?8?0?0C.?70???50?060??000?
000??400??060??003?
000??400???0?8?0?7B.??50??00?060??003?
400??000??060??000?
403??000??
?0?8?0?7D.??50??00?16、以下有關(guān)廣義表的表述中,正確的是(A)。
A.由0個(gè)或多個(gè)原子或子表構(gòu)成的有限序列B.至少有一個(gè)元素是子表
C.不能遞歸定義D.不能為空表17、對(duì)廣義表L=((a,b),((c,d),(e,f)))執(zhí)行head(tail(head(tail(L))))操作的結(jié)果是(D)。
A.的B.eC.(e)D.(e,f)二、判斷題
(×)1、廣義表中原子個(gè)數(shù)即為廣義表的長(zhǎng)度。
(×)2、一個(gè)稀疏矩陣采用三元組表示,若把三元組中有關(guān)行下標(biāo)與列下標(biāo)的值互換,并把mu和nu的值進(jìn)行互換,則完成了矩陣轉(zhuǎn)置。(√)3、稀疏矩陣壓縮存儲(chǔ)后,必會(huì)失去隨機(jī)存取功能。(×)4、廣義表的長(zhǎng)度是指廣義表中括號(hào)嵌套的層數(shù)。(√)5、廣義表是一種多層次的數(shù)據(jù)結(jié)構(gòu),其元素可以是單原子也可以是子表。三、填空題
1、已知二維數(shù)組A[m][n]采用行序?yàn)橹鞣绞酱鎯?chǔ),每個(gè)元素占k個(gè)存儲(chǔ)單元,并且第一個(gè)元素的存儲(chǔ)地址是LOC(A[0][0]),則A[i][j]的地址是___Loc(A[0][0])+(i*N+j)*k____。
2、廣義表運(yùn)算式HEAD(TAIL((a,b,c),(x,y,z)))的結(jié)果是:(x,y,z)。3、二維數(shù)組,可以依照列序?yàn)橹骱托行驗(yàn)橹鲀煞N不同的存儲(chǔ)方式。
4、稀疏矩陣的壓縮存儲(chǔ)方式有:三元組和十字鏈表。四、綜合題
1、現(xiàn)有一個(gè)稀疏矩陣,請(qǐng)給出它的三元組表。
?0?1??0??03100210?20?0??0??0?答案:
i112334j231233v31121-2
一、基本概念
1、數(shù)組地址的計(jì)算(一維數(shù)組,二維數(shù)組)
2、稀疏矩陣的壓縮存儲(chǔ)方法:三元組表和十字鏈表(要求會(huì)稀疏矩陣的三元組表示)3、廣義表的概念
4、求廣義表的深度和長(zhǎng)度、求廣義表的表頭和表尾二、練習(xí)題
3.二維數(shù)組A[10][20]采用列序?yàn)橹鞣绞酱鎯?chǔ),每個(gè)元素占一個(gè)存儲(chǔ)單元并且A[0][0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編版歷史九年級(jí)上冊(cè)第二單元 第5課《羅馬城邦和羅馬帝國(guó)》說(shuō)課稿
- 課件逐字稿教學(xué)課件
- 校外探路課件教學(xué)課件
- 自愿參加具有一定風(fēng)險(xiǎn)的文體活動(dòng)安全協(xié)議書(shū)(2篇)
- 南京航空航天大學(xué)《電子商務(wù)英文》2021-2022學(xué)年第一學(xué)期期末試卷
- 南京航空航天大學(xué)《測(cè)試技術(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《數(shù)學(xué)與統(tǒng)計(jì)學(xué)(二)》2022-2023學(xué)年第一學(xué)期期末試卷
- 北京師范大學(xué)繼續(xù)教育學(xué)院北側(cè)附屬用房改造工程施工組織設(shè)計(jì)
- 范進(jìn)中舉說(shuō)課稿
- 逗螞蟻說(shuō)課稿
- 2024年湖南化工職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整
- 黑龍江省哈爾濱市第十七中學(xué)校2023-2024學(xué)年八年級(jí)上學(xué)期期中數(shù)學(xué)試題【含答案】
- 清收清欠工作方案及措施
- 電化學(xué)儲(chǔ)能電站初步設(shè)計(jì)內(nèi)容深度規(guī)定
- 班車租賃服務(wù)投標(biāo)方案技術(shù)標(biāo)
- 醫(yī)學(xué)知識(shí)科普宣傳活動(dòng)方案設(shè)計(jì)
- 六年級(jí)音樂(lè)上冊(cè)第10課鈴兒響叮當(dāng)全國(guó)公開(kāi)課一等獎(jiǎng)百校聯(lián)賽微課賽課特等獎(jiǎng)?wù)n件
- 供應(yīng)商現(xiàn)場(chǎng)審核培訓(xùn)
- 培訓(xùn)內(nèi)驅(qū)力的課件
- 《髕骨骨折骨折》課件
- 腎內(nèi)科激素的用藥知識(shí)-健康科普知識(shí)講座課件
評(píng)論
0/150
提交評(píng)論