版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)組和廣義表第一頁,共二十七頁,編輯于2023年,星期六本章學(xué)習(xí)要求1.了解數(shù)組的邏輯結(jié)構(gòu)和基本運(yùn)算;2.熟練掌握數(shù)組的兩種存儲(chǔ)表示方式,并掌握數(shù)組在以行為主存儲(chǔ)的地址計(jì)算方法;3.掌握對(duì)特殊矩陣進(jìn)行壓縮存儲(chǔ)時(shí)的下標(biāo)變換公式;4.掌握特殊矩陣和稀疏矩陣的定義及其壓縮存儲(chǔ)原理、特點(diǎn)、適用范圍,了解以三元組表示稀疏矩陣時(shí)進(jìn)行矩陣運(yùn)算的方法;5.掌握廣義表的結(jié)構(gòu)特點(diǎn)及存儲(chǔ)表示方法。第二頁,共二十七頁,編輯于2023年,星期六5.1數(shù)組的定義數(shù)組由一組名字相同、下標(biāo)不同的同類型的元素組成,它有兩個(gè)特點(diǎn):(1)表長(zhǎng)固定(2)數(shù)據(jù)元素類型統(tǒng)一
數(shù)組的分類:(1)一維數(shù)組,即向量;(2)二維數(shù)組;(3)多維數(shù)組。第三頁,共二十七頁,編輯于2023年,星期六5.1數(shù)組的定義
數(shù)組結(jié)構(gòu)不存在插入、刪除運(yùn)算。常見的操作:
值檢索:給定一組下標(biāo),查取相應(yīng)的數(shù)組元素的值。
值存儲(chǔ):給定一組下標(biāo)和值,存入或修改相應(yīng)數(shù)組元素的值。第四頁,共二十七頁,編輯于2023年,星期六5.2數(shù)組的順序存貯結(jié)構(gòu)理論上,數(shù)組可以用兩種存儲(chǔ)結(jié)構(gòu),即順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。實(shí)際:順序存儲(chǔ)結(jié)構(gòu)更為適宜。m行n列的二維數(shù)組按行優(yōu)先順序(以行為主序
)存儲(chǔ):數(shù)組元素aij的存儲(chǔ)位置由下式?jīng)Q定:
LOC(A[i,j])=LOC(A[0,0])+(i*n+j)*L每個(gè)元素占L個(gè)存貯單元
第五頁,共二十七頁,編輯于2023年,星期六5.2數(shù)組的順序存貯結(jié)構(gòu)m行n列的二維數(shù)組按列優(yōu)先順序(以列為主序
)存儲(chǔ):數(shù)組元素aij的存儲(chǔ)位置由下式?jīng)Q定:
LOC(A[i,j])=LOC(A[0,0])+(j*m+i)*L每個(gè)元素占L個(gè)存貯單元
第六頁,共二十七頁,編輯于2023年,星期六5.2數(shù)組的順序存貯結(jié)構(gòu)練習(xí):1、二維數(shù)組A[20][10]采用行序?yàn)橹餍蚍绞酱鎯?chǔ),每個(gè)數(shù)據(jù)元素占4個(gè)存儲(chǔ)單元,且A[10][5]的存儲(chǔ)地址是1000,則A[18][9]的存儲(chǔ)地址是____。A.1208B.1212C.1368 D.13362、二維數(shù)組A中,每個(gè)數(shù)據(jù)元素占4個(gè)字節(jié),行下標(biāo)從0到4,列下標(biāo)從0到5,按行優(yōu)先存儲(chǔ)時(shí)元素A[3][5]的地址域同按列優(yōu)先存儲(chǔ)時(shí)元素____的地址相同。A.A[2][4]B.A[3][4]C.A[3][5]D.A[4][4]第七頁,共二十七頁,編輯于2023年,星期六5.3矩陣的壓縮存儲(chǔ)特殊矩陣:值相同的元素或零元素在矩陣中的分布有一定的規(guī)律。稀疏矩陣:矩陣中只有少量的非零值元,并且這些非零值元在矩陣中的分布沒有一定規(guī)律。壓縮存儲(chǔ)原理:為相等的多個(gè)非零元只分配一個(gè)存儲(chǔ)空間,零元不分配空間。第八頁,共二十七頁,編輯于2023年,星期六5.3.1特殊矩陣的壓縮存儲(chǔ)特殊矩陣常見的特殊矩陣有對(duì)稱矩陣、下(上)三角矩陣、對(duì)角矩陣等等。1.對(duì)稱矩陣若一個(gè)n階矩陣A中的元素滿足aij=aji(1≤i,j≤n),則稱為n階對(duì)稱矩陣。壓縮存儲(chǔ)原理:為每一對(duì)對(duì)稱元素分配一個(gè)存儲(chǔ)空間,則可將原本需要n×n個(gè)元素空間壓縮為n(n+1)/2個(gè)元素空間中。第九頁,共二十七頁,編輯于2023年,星期六
假設(shè)以一維數(shù)組s[1:n(n+1)/2]作為n階對(duì)稱矩陣A的存儲(chǔ)結(jié)構(gòu),則s[k]和矩陣元素aij之間存在一一對(duì)應(yīng)關(guān)系,矩陣下標(biāo)(i,j)與k的關(guān)系如下:第十頁,共二十七頁,編輯于2023年,星期六2.三角矩陣下(上)三角矩陣的特點(diǎn)是以主對(duì)角線為界的上(下)半部分所有元素的值都相同,而下(上)半部分的元素值則沒有任何規(guī)律。將上半部分的常量值存儲(chǔ)在0單元,下半部分和主對(duì)角上的元素從1號(hào)單元開始存放對(duì)于任意的(i,j),在一維數(shù)組中的存放位置可利用下列公式求得:第十一頁,共二十七頁,編輯于2023年,星期六3.對(duì)角矩陣若n階方陣中的非零值元都集中在以主對(duì)角線為中心的(由k條對(duì)角線組成的)帶狀區(qū)域中,則稱為k階對(duì)角矩陣。非零元素以行為主序,從下標(biāo)為1的位置開始依次存放在一維數(shù)組中,而位置1存放數(shù)值0
對(duì)于任意的(i,j),可按以下公式求得矩陣元素在一維數(shù)組中的存儲(chǔ)位置k:第十二頁,共二十七頁,編輯于2023年,星期六假設(shè)在m×n的矩陣中,有t個(gè)元素不為零。令δ=t/m×n,稱δ為矩陣的稀疏因子。通常認(rèn)為δ≤0.05的矩陣為稀疏矩陣。三元組順序表將三元組按行優(yōu)先順序排列,同一行中按列號(hào)從小到大的順序排列,組成一個(gè)線性表,稱為三元組表,再采用順序存儲(chǔ)方法存儲(chǔ)該表,稱為三元組順序表。5.3.2稀疏矩陣第十三頁,共二十七頁,編輯于2023年,星期六三元組順序表的結(jié)構(gòu)定義如下:DefineSMAX1024typedefstruct{inti,j;/*非零元素的行下標(biāo)、列下標(biāo)*/datatypev;/*非零元素值*/}triple;/*三元組類型*/typedefstruct{intmu,nu,tu;/*矩陣的行數(shù)、列數(shù)及非零元素的個(gè)數(shù)*/tripledata[SMAX];//三元組表}TSMatrix;/*三元組表的存儲(chǔ)類型*/第十四頁,共二十七頁,編輯于2023年,星期六矩陣轉(zhuǎn)置運(yùn)算的實(shí)現(xiàn):對(duì)于一個(gè)m×n的矩陣M,它的轉(zhuǎn)置矩陣N是一個(gè)n×m的矩陣,且N(i,j)=M(j,i),0≤i≤n,0≤j≤m。
假設(shè)a和b都是TSMatrix型變量,分別表示矩陣M、N。從a得到b轉(zhuǎn)置的實(shí)現(xiàn)步驟:①將矩陣的行列值互換;②將每個(gè)三元組中的i和j相互調(diào)換;③重排三元組之間的次序。第十五頁,共二十七頁,編輯于2023年,星期六
1、按矩陣M的列序進(jìn)行轉(zhuǎn)置【算法思想】對(duì)矩陣M中每一列col(0≤col≤n-1),通過從頭至尾掃描三元組表a.data,找出所有列號(hào)等于col的那些三元組,將它們的行號(hào)、列號(hào)互換后依次放入b.data,即可得到N的按行優(yōu)先的壓縮存儲(chǔ)表示。具體實(shí)現(xiàn)如下:第十六頁,共二十七頁,編輯于2023年,星期六0002800000009100000000-60000003110-150220015A=j==3時(shí)j==1時(shí)ijv13456782ijv111514221665191632813456782j==2時(shí)方法1:按照原矩陣的列號(hào)的順序?qū)θM掃描111515910000060222800030000011009100015B=22113233628j==4時(shí)4122第十七頁,共二十七頁,編輯于2023年,星期六Statustransmatrix(TSMatrixa,TSMatrix&b){intp,q,col;b.mu=a.nu;b.nu=a.mu;b.tu=a.tuif(b.tu){q=0;for(col=0;col<a.nu;col++)for(p=0;p<a.tu;p++)if(a.data[p].j==col){b.data[q].i=a.data[p].j;b.data[q].j=a.data[p].i;b.data[q].v=a.data[p].v;q++;}}return(ok);}第十八頁,共二十七頁,編輯于2023年,星期六2、快速轉(zhuǎn)置【算法思想】建立兩個(gè)輔助向量分別記錄矩陣轉(zhuǎn)置后各行非零元素個(gè)數(shù)和各行元素在轉(zhuǎn)置三元組表中的開始存放位置;掃描三元組表,根據(jù)某項(xiàng)的列號(hào),確定它轉(zhuǎn)置后的行號(hào),查第二個(gè)輔助向量表,按查到的位置直接將該項(xiàng)存入轉(zhuǎn)置三元組表中。第十九頁,共二十七頁,編輯于2023年,星期六方法2(對(duì)號(hào)入座)ijv13456782ijv1115142216651916328134567821115關(guān)鍵:確定原矩陣的三元組表中每個(gè)三元組在新表中的位置41226161591第二十頁,共二十七頁,編輯于2023年,星期六512346?15loc(1,1)0002800000009100000000-60000003110-150220015A=0000060222800030000011009100015B=11loc(2,1)=loc(1,1)+2loc(3,1)=loc(2,1)+13loc(4,1)=loc(3,1)+2
22尋址公式:A中第i列的第一個(gè)非零元在TB中的位置=(A中第i-1列的第一個(gè)非零元在TB的位置)+(A中第i-1列的非零元的個(gè)數(shù))第二十一頁,共二十七頁,編輯于2023年,星期六if(b.tu){for(col=0;col<a.nu;++col)num[col]=0;/*初始化*/for(k=0;k<a.tu;++k)++num[a.data[k].j];/*求M的每一列含非零元素個(gè)數(shù)*/cpot[0]=0;for(col=1;col<a.nu;++col)cpot[col]=cpot[col-1]+num[col-1];for(p=0;p<a.tu;++p)//轉(zhuǎn)置
{col=a.data[p].j;q=cpot[col];b.data[q].i=a.data[p].j;b.data[q].j=a.data[p].i;b.data[q].v=a.data[p].v;++cpot[col];}}return(ok);}算法實(shí)現(xiàn)如下:Statusfast_transpos(TSMatrixa,TSMatrix&b)/*將三元組表a表示的稀疏矩陣轉(zhuǎn)置為三元組表b表示的稀疏矩陣*/{intp,q,col,k;intnum[0..a.nu],cpot[0..a.nu];b.mu=a.nu;
b.nu=a.mu;
b.tu=a.tu;第二十二頁,共二十七頁,編輯于2023年,星期六5.4廣義表5.4.1廣義表的定義和性質(zhì)
廣義表是n(n>=0)個(gè)元素a1,a2,a3,…,an的有限序列,其中ai或者是原子項(xiàng),或者是一個(gè)廣義表。通常記作LS=(a1,a2,a3,…,an)。LS是廣義表的名字,n為它的長(zhǎng)度。若ai是廣義表,則稱它為L(zhǎng)S的子表。
廣義表中的元素區(qū)分為區(qū)別原子和廣義表,書寫時(shí)用大寫字母表示廣義表,用小寫字母表示原子。若廣義表LS非空(n>=1),則a1是LS的表頭,其余元素組成的表(a2,…an)稱為L(zhǎng)S的表尾。廣義表所含括號(hào)的重?cái)?shù)即為廣義表的深度。第二十三頁,共二十七頁,編輯于2023年,星期六5.4廣義表5.4.1廣義表的定義和性質(zhì)一、廣義表的定義1、定義也稱列表(lists),n0個(gè)元素的集合。一般記為:LS=(a1,a2,…an)其中:元素允許為單元素或子表。習(xí)慣上:?jiǎn)卧赜眯懽帜缸颖碛么髮懽帜?、廣義表的例子如下:(1)A=()——A是一個(gè)空表,其長(zhǎng)度為零。(2)B=(e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度大米加工企業(yè)食品安全追溯系統(tǒng)建設(shè)合同4篇
- 2025年度存量房買賣居間合同書(含物業(yè)交割流程)4篇
- 2025版門窗行業(yè)市場(chǎng)風(fēng)險(xiǎn)預(yù)警與應(yīng)對(duì)合同4篇
- 2025年銅桿產(chǎn)品采購及供應(yīng)鏈管理合同3篇
- 二零二五年房地產(chǎn)產(chǎn)權(quán)過戶購買代理合同3篇
- 2025版民房買賣合同售后服務(wù)保障協(xié)議4篇
- 二零二五年度高端住宅委托代理銷售合作協(xié)議3篇
- 二零二五年度美容院?jiǎn)T工培訓(xùn)與職業(yè)發(fā)展合同4篇
- 2025年度新型建筑體系廠房鋼結(jié)構(gòu)定制合同范本4篇
- 2025年度個(gè)人古村落保護(hù)貸款擔(dān)保合同樣本(含傳統(tǒng)工藝傳承)3篇
- 導(dǎo)尿及留置導(dǎo)尿技術(shù)
- 情人合同范例
- 建筑公司勞務(wù)合作協(xié)議書范本
- 安徽省合肥市2023-2024學(xué)年高一上學(xué)期物理期末試卷(含答案)
- 《基于杜邦分析法的公司盈利能力研究的國(guó)內(nèi)外文獻(xiàn)綜述》2700字
- 儒家思想講解課程設(shè)計(jì)
- 2024年個(gè)人汽車抵押借款合同范本(四篇)
- 2024-2025學(xué)年九年級(jí)化學(xué)上冊(cè) 第二單元 單元測(cè)試卷(人教版)
- 軌道交通設(shè)備更新項(xiàng)目可行性研究報(bào)告-超長(zhǎng)期國(guó)債
- 2024-2030年中國(guó)一氧化二氮?dú)怏w行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- NB/T 11446-2023煤礦連采連充技術(shù)要求
評(píng)論
0/150
提交評(píng)論