數(shù)據(jù)結(jié)構(gòu)實驗報告稀疏矩陣運算_第1頁
數(shù)據(jù)結(jié)構(gòu)實驗報告稀疏矩陣運算_第2頁
數(shù)據(jù)結(jié)構(gòu)實驗報告稀疏矩陣運算_第3頁
數(shù)據(jù)結(jié)構(gòu)實驗報告稀疏矩陣運算_第4頁
數(shù)據(jù)結(jié)構(gòu)實驗報告稀疏矩陣運算_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、教學(xué)單位計算機科學(xué)與技術(shù)學(xué)生學(xué)號 012301714315HUBEI ENGINEERING UNIVERSITY數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告書題 目稀疏矩陣運算器學(xué)生姓名 秦豹專業(yè)名稱 指導(dǎo)教師 李志敏實驗?zāi)康模?深入研究數(shù)組的存儲表示和實現(xiàn)技術(shù),熟悉廣義表存儲結(jié)構(gòu)的特性。要求以需要分析 : 稀疏矩陣是指那些多數(shù)元素為零的矩陣。利用“稀疏”特點進行存儲和計算可 以大大節(jié)省存儲空間, 提高計算效率。 實現(xiàn)一個能進行稀疏矩陣基本運算的運算器。 帶“行邏輯鏈接信息”的三元組順序表存儲稀疏矩陣,實現(xiàn)兩矩陣的相加、相減、相乘等運 算。輸入以三元組表示,輸出以通常的陣列形式列出。軟件平臺: Windows 20

2、00 ,Visual C 6.0或 WINTC概要設(shè)計: ADT Array 數(shù)據(jù)對象 :D = aij | 0 i b1-1,0 j b2-1數(shù)據(jù)關(guān)系 :R = ROW, COL ROW = | 0 i b1-2, 0 j b2-1COL = | 0 i b1-1,0 j12 3 XI = H-丿a卜卜 隔爭素素 榕兀兀元 r工mw J - - - - pl JJJdJJH C. i- hj 衣夯萬JR 介 T- T- T -LT01T11J01 -z 零-123 幵);:; 裕兀一兀元 亠工垂蠡 M- PLR - tit亍亍 -z 12 3 - 于 格元元元 空/r?二二二 Pv3jdjd

3、 (一丁- Tc C5以T-T ia&1 c C亠雪盍0605-1-3A R0-4 fcS-s+tulFLul-青一A 0 4的形形形 r龕 A三二三1 0 fl0 0 4A mBi 行式古式 的年 _-二:mEZ二 S&L.- : : ; E B 7 P 謔請注墾-F矩4ZEihJE 數(shù)住pf負(fù)孚KilkK 非兀元元 3 0勺勺切 -* sis 的XAA 目莖羽.世種 項雪式式 的的形蛍 g組組組 進矩兀元_兀 賈三三三A: 入輸用用用陣 靈哨請請請矩矩陣的轉(zhuǎn)置-*100B7-2 2 6 32 12 2 );1:132 格兀元一兀 JAtLrRrEi L - -/丁L丁一T -z c c (

4、丄也T一非元元兀 sn 的、入入入 的的形琢形 進矩元元元4非元元入輸用用黒L冃主冃土墾冃芒wB :10240 12矩陣的乘法程序源碼:#in clude#in clude#in clude#define MAXSIZE 40假設(shè)非零元素個數(shù)的最大值為40#define MAXRC 20/假設(shè)矩陣的最大行數(shù)為20typedef int ElemType;typedef structint i,j;非零元的行下標(biāo)和列下標(biāo)ElemType e; /非零元的值Triple;typedef structTriple dataMAXSIZE+1;int rposMAXRC+1;/各行第一個非零元在三元組

5、的位置表int hs,ls,fls;TSMatrix,*Matrix;void Creat(TSMatrix &M)int i,k;for(i=1;i=MAXRC+1;i+)M.rposi=0;printf(請輸入矩陣的行數(shù)、列數(shù)和非零元個數(shù)(以空格隔開):);scan f(%d %d %d,&M.hs,&M.ls,&M.fls);for(i=1;i=M.fls;i+)printf( 請用三元組形式輸入矩陣的元素 (行 列 非零元素 ):); scanf(%d %d %d,&M.datai.i,&M.datai.j,&M.datai.e); for(i=1,k=1;i=M.hs;i+)M.rp

6、osi=k;while(M.datak.i=i & k=M.fls) k+;void Xiangjia(TSMatrix A,TSMatrix B,TSMatrix &C,int n)int a,b,temp,l;C.hs=A.hs;C.ls=A.ls; a=b=l=1; while(a=A.fls & b=B.fls) if(A.dataa.i=B.datab.i) if(A.dataa.jB.datab.j) C.datal=B.datab; C.datal+.e=n*B.datab+.e; elsetemp=A.dataa.e+n*B.datab.e;if(temp) C.datal=A

7、.dataa;C.datal.e=temp;l+; a+;b+; else if(A.dataa.iB.datab.i)C.datal+=A.dataa+;else C.datal=B.datab; C.datal+.e=n*B.datab+.e;while(a=A.fls)C.datal+=A.dataa+;while(b=B.fls)C.datal=B.datab; C.datal+.e=n*B.datab+.e; C.fls=l-1;int Xiangcheng(TSMatrix A,TSMatrix B,TSMatrix &Q)int arow,brow,ccol,tp,p,q,t;i

8、nt ctempMAXRC+1; if(A.ls!=B.hs) return 0; Q.hs=A.hs;Q.ls=B.ls;Q.fls=0;if(A.fls*B.fls)for(arow=1;arow=A.hs;arow+)for(ccol=1;ccol=Q.ls;ccol+)ctempccol=0;Q.rposarow=Q.fls+1; if(arowA.hs) tp=A.rposarow+1;else tp=A.fls+1;for(p=A.rposarow;ptp;p+)brow=A.datap.j; if(browB.hs) t=B.rposbrow+1;else t=B.fls+1;

9、for(q=B.rposbrow;qt;q+)ccol=B.dataq.j; ctempccol+=A.datap.e*B.dataq.e;for(ccol=1;ccolMAXSIZE) return 0; Q.dataQ.fls.i=arow; Q.dataQ.fls.j=ccol; Q.dataQ.fls.e=ctempccol;return 1;void Print_SMatrix(TSMatrix M)int k,l,n;Matrix p;p=&M;for(k=1,n=1;khs;k+)for(l=1;lls;l+)if(p-datan.i=k & p-datan.j=l)printf

10、(%5d,p-datan.e); n+;elseprintf(%5d,0);printf(n);printf(n);void Zhuanzhi(TSMatrix *a,TSMatrix *b)int q,col,p;b-hs=a-ls;b-ls=a-hs;b-fls=a-fls;if(b-fls)q=1;for(col=1;colls;col+) for(p=1;pfls;p+) if(a-datap.j=col) b-dataq.i=a-datap.j;b-dataq.j=a-datap.i; b-dataq.e=a-datap.e; +q;void Destory_SMatrix(TSMa

11、trix &M)M.hs=M.ls=M.fls=0;void main()TSMatrix A,B,C;TSMatrix *p=&A,*q=&B; int flag,n;while(1)system(cls); printf(nnn);printf(t i1n);printf(t |* 稀疏矩陣的加、減、轉(zhuǎn)、乘 *I n);printf(t |1n);printf(t|1、稀疏矩陣的加法|n);printf(t|2、稀疏矩陣的減法|n);printf(t|3、稀疏矩陣的轉(zhuǎn)置|n);printf(t|4、稀疏矩陣的乘法|n);printf(t|5、退出該應(yīng)用程序|n);prin tf(t 11n

12、);printf( 輸入要進行的項目的編號 :); scanf(%d,&flag);if(flag=5) break;Creat(A);printf( 矩陣 A:n); Print_SMatrix(A);switch(flag) case 1: Creat(B);n=1;printf( 矩陣 B:n); Print_SMatrix(B);if(A.hs=B.hs & A.ls=B.ls) printf(A+B:n);Xiangjia(A,B,C,n);Print_SMatrix(C);else printf( 錯誤 !行列不一致 n); break;case 2: Creat(B);n=-1;printf( 矩陣 B:n);Print_SMatrix(B); if(A.hs=B.hs & A.ls=B.ls) printf(A-B:n); Xiangjia(A,B,C,n); Print_SMatrix(C);else printf( 錯誤 ! 行列不一致 n); break;case 3: printf(A-B:n);Zhuanzhi(p,q); Print_SMatrix(B); break;case 4: Creat(B); printf( 矩陣 B:n); Print_SMatrix(B); printf(A*B:n); n=Xiangcheng(A,B

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論