數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-稀疏矩陣_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-稀疏矩陣_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-稀疏矩陣_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-稀疏矩陣_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-稀疏矩陣_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精品文檔數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告 設(shè)計題目:稀疏矩陣專業(yè):計算機科技院系:計算機學(xué)院姓名: xxxxxxx學(xué)號: xxxxxxxx時間:2021年9月22日目錄一 需求分析- 3 1. 問題描述- 32. 根本要求- 33 實現(xiàn)提示- 3二 概要設(shè)計-3三 詳細設(shè)計-4四 調(diào)試分析- 10五 用戶手冊-11一 需求分析1.【問題描述】 稀疏矩陣是指那些多數(shù)元素為零的矩陣。利用“稀疏特點進行存儲和計算可以大大節(jié)省存儲空間,提高計算效率。實現(xiàn)一個能進行稀疏矩陣根本運算的運算器。2.【根本要求】 以“帶行邏輯鏈接信息的三元組順序表示稀疏矩陣,實現(xiàn)兩個矩陣相加,相減和相乘的運算,稀疏矩陣的輸入形式采用三元

2、組表示,而運算結(jié)果的矩陣那么以通常的陣列形式列出。3.【實現(xiàn)提示】1首先應(yīng)輸入矩陣的行數(shù)和列數(shù),并判別給出的兩個矩陣的行,列數(shù)對于所要求作的運算是否匹配,可設(shè)矩陣的行數(shù)和列數(shù)均不超過20。2程序可以對三元組的輸入順序加以限制,例如,按行優(yōu)先。3在用三元組表示稀疏矩陣時,相加或相減所得結(jié)果矩陣應(yīng)該另生成,乘積矩陣也可用二維數(shù)組存放二 概要設(shè)計1. 設(shè)定數(shù)組的抽象數(shù)據(jù)類型定義:ADT SparseMatrix數(shù)據(jù)對象:D= m和n分別稱為矩陣的行數(shù)和列數(shù)數(shù)據(jù)關(guān)系:R=Row,ColRow=<ai,j,ai,j+1 >|1<=i<=m,a<=j<=n-1 Col=

3、<ai,j,ai+1,j>|1<=i<=m-1,a<=j<=n 根本操作: CreateSMatrix(&M); 操作結(jié)果:創(chuàng)立稀疏矩陣M。 DestorySMatrix(&M); 初始條件:稀疏矩陣M存在。 操作結(jié)果:銷毀稀疏矩陣M。 PrintSMatrix(M); 初始條件:稀疏矩陣M存在。 操作結(jié)果: 輸出稀疏矩陣M。 CopySMatrix(M,&T); 初始條件:稀疏矩陣M存在。 操作結(jié)果:由稀疏矩陣M復(fù)制得到T。 AddSMatrix(M,N,&Q); 初始條件:稀疏矩陣M與N的行數(shù)和列數(shù)對應(yīng)相等。 操作結(jié)果:求

4、稀疏矩陣的和Q=M+N。 SubtSMatrix(M,N,&Q); 初始條件:稀疏矩陣M與N的行數(shù)和列數(shù)對應(yīng)相等。 操作結(jié)果:求稀疏矩陣的差Q=M-N。 MultSMatrix(M,N,&Q); 初始條件:稀疏矩陣M的列數(shù)等于N的行數(shù)。 操作結(jié)果:求稀疏矩陣乘積Q=M*N。 TransposeSMatrix(M,&T); 初始條件:稀疏矩陣M 存在。 操作結(jié)果:求稀疏矩陣M的轉(zhuǎn)置矩陣T。ADT SparseMatrix2本程序包含的模塊1void main()初始化;do 接收命令;處理命令;while(命令!=退出);2稀疏矩陣模塊實現(xiàn)稀疏矩陣抽象數(shù)據(jù)類型。3稀疏矩陣

5、求值模塊實現(xiàn)稀疏矩陣求值抽象數(shù)據(jù)類型。 稀疏矩陣求值模塊包括:矩陣相加模塊AddRLSMatrix();矩陣相減模塊SubRLSMatrix();相乘模塊MulTSMatrix();三 詳細設(shè)計#include<stdio.h>#include<stdlib.h>#define MAXSIZE 20#define MAXRC 20typedef struct /稀疏矩陣的三元組順序表存儲表示int i,j; /該非零元的行下標和列下標int e;Triple;typedef structTriple dataMAXSIZE+1; /非零元三元組表,data0未用int

6、rposMAXRC+1; /各行第一個非零元的位置表int mu,nu,tu; /矩陣的行數(shù)列數(shù)和非零元的個數(shù)RLSMatrix;void CreateSMatrix(RLSMatrix *T) /輸入創(chuàng)立稀疏矩陣int k;printf(" n 請輸入矩陣行數(shù)、列數(shù)及非零元個數(shù): ");scanf("%d%d%d",&T->mu,&T->nu,&T->tu);printf("n");if(T->tu>MAXSIZE|T->mu>21)printf(" 非零個

7、數(shù)超出定義范圍!出錯!");exit(0);for(k=1;k<=T->tu;k+)printf(" 請輸入第%d個非零元素的行數(shù),列數(shù)及其值: ",k);scanf("%d%d%d",&T->datak.i,&T->datak.j,&T->datak.e);void AddRLSMatrix(RLSMatrix M,RLSMatrix N,RLSMatrix *Q) /稀疏矩陣相加int p,q,k=1;if(M.mu!=N.mu|M.nu!=N.nu)printf(" 你的輸入

8、不滿足矩陣相加的條件!n");exit(1);Q->mu=M.mu;Q->nu=M.nu;for(p=1,q=1;p<=M.tu&&q<=N.tu;)if(M.datap.i=N.dataq.i)if(M.datap.j=N.dataq.j)Q->datak.i=M.datap.i;Q->datak.j=M.datap.j;Q->datak.e=M.datap.e+N.dataq.e;p+;q+;k+;else if(M.datap.j<N.dataq.j)Q->datak.i=M.datap.i;Q->da

9、tak.j=M.datap.j;Q->datak.e=M.datap.e;k+;p+;else if(M.datap.j>N.dataq.j)Q->datak.i=N.dataq.i;Q->datak.j=N.dataq.j;Q->datak.e=N.dataq.e;k+;p+;else if(M.datap.i<N.dataq.i)Q->datak.i=M.datap.i;Q->datak.j=M.datap.j;Q->datak.e=M.datap.e;k+;p+;else if(M.datap.i>N.dataq.i)Q->

10、;datak.i=N.dataq.i;Q->datak.j=N.dataq.j;Q->datak.e=N.dataq.e;k+;q+;if(p!=M.tu+1)for(;p<=M.tu;p+)Q->datak.i=M.datap.i;Q->datak.j=M.datap.j; Q->datak.e=M.datap.e;k+;if(q!=N.tu+1)for(;q<=N.tu;q+)Q->datak.i=N.dataq.i;Q->datak.j=N.dataq.j;Q->datak.e=N.dataq.e;k+;void SubRLSM

11、atrix(RLSMatrix M,RLSMatrix N,RLSMatrix *Q) /稀疏矩陣相減int p,q,k=1;if(M.mu!=N.mu|M.nu!=N.nu)printf(" 你的輸入不滿足矩陣相減的條件!n");exit(1);Q->mu=M.mu;Q->nu=M.nu;for(p=1,q=1;p<=M.tu&&q<=N.tu;)if(M.datap.i=N.dataq.i)if(M.datap.j=N.dataq.j)Q->datak.i=M.datap.i;Q->datak.j=M.datap.j;

12、Q->datak.e=M.datap.e-N.dataq.e;p+;q+;k+;else if(M.datap.j<N.dataq.j)Q->datak.i=M.datap.i;Q->datak.j=M.datap.j;Q->datak.e=M.datap.e;k+;p+;else if(M.datap.j>N.dataq.j)Q->datak.i=N.dataq.i;Q->datak.j=N.dataq.j;Q->datak.e=-N.dataq.e;k+;p+;else if(M.datap.i<N.dataq.i)Q->d

13、atak.i=M.datap.i;Q->datak.j=M.datap.j;Q->datak.e=M.datap.e;k+;p+;else if(M.datap.i>N.dataq.i)Q->datak.i=N.dataq.i;Q->datak.j=N.dataq.j;Q->datak.e=-N.dataq.e;k+;q+;if(p!=M.tu+1)for(;p<=M.tu;p+)Q->datak.i=M.datap.i;Q->datak.j=M.datap.j; Q->datak.e=M.datap.e;k+;if(q!=N.tu+

14、1)for(;q<=N.tu;q+)Q->datak.i=N.dataq.i;Q->datak.j=N.dataq.j;Q->datak.e=-N.dataq.e;k+;int MulTSMatrix(RLSMatrix M,RLSMatrix N,RLSMatrix *Q) /稀疏矩陣相乘int ccol=0,tp,brow,t,arow,p,q,i;int ctempMAXSIZE+1;if(M.nu!=N.mu) printf(" 你的輸入不滿足矩陣相乘的條件!n");return 0; Q->mu=M.mu;Q->nu=N.nu;

15、Q->tu=0;if(M.tu*N.tu!=0)for(arow=1;arow<=M.mu;+arow)for(i=1;i<=N.nu;i+)ctempi=0; Q->rposarow=Q->tu+1;if(arow<M.mu) tp=M.rposarow+1;else tp=M.tu+1;for(p=M.rposarow;p<tp;+p)brow=M.datap.j;if(brow<N.mu) t=N.rposbrow+1;else t=N.tu+1;for(q=N.rposbrow;q<t;+q)ccol=N.dataq.j;ctemp

16、ccol+=M.datap.e*N.dataq.e;for(ccol=1;ccol<=Q->nu;+ccol)if(ctempccol)if(+Q->tu>MAXSIZE) return 0;Q->dataQ->tu.i=arow;Q->dataQ->tu.j=ccol;Q->dataQ->tu.e=ctempccol;return 1;void PrintSMatrix(RLSMatrix Q) /輸出稀疏矩陣int k=1,row,line;printf("n運算結(jié)果: ");if(Q.tu=0) printf

17、("0");elsefor(row=1;row<=Q.mu;row+)for(line=1;line<=Q.nu;line+)if(Q.datak.i=row&&Q.datak.j=line)printf("%d ",Q.datak+.e);else printf("0 ");printf("nt ");void main()RLSMatrix M,N,Q;int i;system("cls");printf(" n");printf("

18、 必做題,稀疏矩陣運算器 n");printf(" 姓名:xxxxx n");printf(" 學(xué)號:xxxxxxxxxxxx n");printf(" n");doprintf("n");printf(" 歡送進入稀疏矩陣運算器 n");printf(" - n");printf(" 1.矩陣相加 n");printf(" 2.矩陣相減 n");printf(" 3.矩陣相乘 n");printf(" 4.退出系統(tǒng) n");printf("n");printf(">>>>>> 請選擇功能(1-4): ");scanf("%d",&i);if(i=4) goto end;else printf("n 請輸入第一個矩陣M:n"); CreateSMatrix(&M); printf("n 請輸入第二

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論