數(shù)據(jù)結(jié)構(gòu)矩陣實(shí)驗(yàn)報(bào)告1_第1頁
數(shù)據(jù)結(jié)構(gòu)矩陣實(shí)驗(yàn)報(bào)告1_第2頁
數(shù)據(jù)結(jié)構(gòu)矩陣實(shí)驗(yàn)報(bào)告1_第3頁
數(shù)據(jù)結(jié)構(gòu)矩陣實(shí)驗(yàn)報(bào)告1_第4頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)矩陣實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)?zāi)康暮鸵螅?)掌握各種特殊矩陣如對稱矩陣、上下三角矩陣和對角矩陣的壓縮存儲方法。(2)掌握稀疏矩陣的各種存儲結(jié)構(gòu)以及基本運(yùn)算實(shí)現(xiàn)算法。(3)掌握廣義表的遞歸特性、存儲結(jié)構(gòu)以及基本運(yùn)算實(shí)現(xiàn)算法。二、實(shí)驗(yàn)環(huán)境、內(nèi)容和方法實(shí)驗(yàn)內(nèi)容:打開visual c+6.0并輸入實(shí)驗(yàn)指導(dǎo)書上的程序,并進(jìn)行調(diào)試和運(yùn)行。自行嘗試編寫第六個實(shí)驗(yàn)。實(shí)驗(yàn)方法:(一)綜合運(yùn)用課本所學(xué)的知識,用不同的算法實(shí)現(xiàn)在不同的程序功能。(二)結(jié)合指導(dǎo)老師的指導(dǎo),解決程序中的問題,正確解決實(shí)際中存在的異常情況,逐步改善功能。(三)根據(jù)實(shí)驗(yàn)內(nèi)容,編譯程序。實(shí)驗(yàn)環(huán)境:windows xp visual c+6.0

2、三、實(shí)驗(yàn)過程描述實(shí)驗(yàn)以下是一個5*5階的螺旋方陣。設(shè)計(jì)一個程序輸出該形式的n*n階方陣。1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一、打開visual c+6.0并輸入如下程序#include#define maxlen 10void fun(int amaxlenmaxlen,int n)int i,j,k=0,m;if (n%2=0)m=n/2;else m=n/2+1; for (i=0;ifor (j=i;jk+;aij=k;for (j=i+1;jk+;ajn-i-1=k;for (j=n-i-2;j=i

3、;j-)k+;an-i-1j=k;for (j=n-i-2;j=i+1;j-)k+;aji=k;void main()int n,i,j;int amaxlenmaxlen;printf(n);printf(輸入n(nscanf(%d,&n);fun(a,n);printf(%d階數(shù)字方陣如下:n,n);for (i=0;ifor (j=0;jprintf(%4d,aij);printf(n);printf(n);二、,編譯并連接此程序,如圖 三、運(yùn)行此程序,如圖實(shí)驗(yàn)假設(shè)n*n的稀疏矩陣a采用三元組表示,設(shè)計(jì)一個程序?qū)崿F(xiàn)如下功能:(1)生成如下兩個稀疏矩陣的三元組a和b:a:1 0 3 0 b

4、: 3 0 0 00 1 0 0 0 4 0 00 0 1 0 0 0 1 00 0 1 1 0 0 0 2(2)輸出a轉(zhuǎn)置矩陣的三元組(3)輸出a+b的三元組 (4) 輸出a*b的三元組 一、輸入如圖所示程序#include#define n 4typedef int elemtype;#define maxsize 100typedef struct int r;int c;elemtype d; tupnode;typedef struct int rows;int cols;int nums;tupnode datamaxsize; tsmatrix;void creatmat(tsm

5、atrix &t,elemtype ann)int i,j;t.rows=n;t.cols=n;t.nums=0;for (i=0;ifor (j=0;jif (aij!=0)t.datat.nums.r=i;t.datat.nums.c=j;t.datat.nums.d=aij;t.nums+;void dispmat(tsmatrix t)int i;if (t.numsreturn;printf(t%dt%dt%dn,t.rows,t.cols,t.nums);printf(t-n);for (i=0;iprintf(t%dt%dt%dn,t.datai.r,t.datai.c,t.da

6、tai.d); void tranmat(tsmatrix t,tsmatrix &tb) int p,q=0,v; tb.rows=t.cols;tb.cols=t.rows;tb.nums=t.nums;if (t.nums!=0)for (v=0;vfor (p=0;pif (t.datap.c=v)tb.dataq.r=t.datap.c;tb.dataq.c=t.datap.r;tb.dataq.d=t.datap.d;q+;int matadd(tsmatrix a,tsmatrix b,tsmatrix &c) int i=0,j=0,k=0;elemtype v;if (a.r

7、ows!=b.rows | a.cols!=b.cols)return 0;c.rows=a.rows;c.cols=a.cols;while (iif (a.datai.r=b.dataj.r)if(a.datai.cc.datak.r=a.datai.r;c.datak.c=a.datai.c;c.datak.d=a.datai.d;k+;i+;else if (a.datai.cb.dataj.c)c.datak.r=b.dataj.r;c.datak.c=b.dataj.c;c.datak.d=b.dataj.d;k+;j+;elsev=a.datai.d+b.dataj.d;if (

8、v!=0) c.datak.r=a.datai.r;c.datak.c=a.datai.c;c.datak.d=v;k+;i+;j+;else if (a.datai.rc.datak.r=a.datai.r;c.datak.c=a.datai.c;c.datak.d=a.datai.d;k+;i+;elsec.datak.r=b.dataj.r;c.datak.c=b.dataj.c;c.datak.d=b.dataj.d;k+;j+;c.nums=k;return 1;int value(tsmatrix c,int i,int j)int k=0;while (kif (kreturn(

9、c.datak.d);elsereturn(0);int matmul(tsmatrix a,tsmatrix b,tsmatrix &c)int i,j,k,p=0;elemtype s;if (a.cols!=b.rows)return 0;for (i=0;i for (j=0;j s=0;for (k=0;ks=s+value(a,i,k)*value(b,k,j);if (s!=0)c.datap.r=i;c.datap.c=j;c.datap.d=s;p+;c.rows=a.rows;c.cols=b.cols;c.nums=p;return 1;void main()elemty

10、pe a1nn=1,0,3,0,0,1,0,0,0,0,1,0,0,0,1,1;elemtype b1nn=3,0,0,0,0,4,0,0,0,0,1,0,0,0,0,2;tsmatrix a,b,c;creatmat(a,a1);creatmat(b,b1);printf(a的三元組:n);dispmat(a);printf(b的三元組:n);dispmat(b);printf(a轉(zhuǎn)置為cn);tranmat(a,c);printf(c的三元組:n);dispmat(c);printf(c=a+bn);matadd(a,b,c);printf(c的三元組:n);dispmat(c);prin

11、tf(c=a*bn);matmul(a,b,c);printf(c的三元組:n);dispmat(c);二、程序運(yùn)行結(jié)果如圖 實(shí)驗(yàn)編寫一個程序?qū)崿F(xiàn)廣義表的各種運(yùn)算,并在此基本上設(shè)計(jì)一個程序完成如下功能:(1)建立廣義表g=“(b,(b,a,(#),d),(a,b),c,(#)”的鏈?zhǔn)酱鎯Y(jié)構(gòu);(2)輸出廣義表g的長度;(3)輸出廣義表g的深度;(4)輸出廣義表g的最大原子;一、輸入如圖所示程序#include#includetypedef char elemtype;typedef struct lnode int tag;unionelemtype data;struct lnode *su

12、blist;val;struct lnode *link; glnode; glnode *creatgl(char *&s) glnode *h;char ch;ch=*s+;if (ch!=0)h=(glnode *)malloc(sizeof(glnode);if (ch=()h-tag=1;h-val.sublist=creatgl(s);else if (ch=)h=null;elseh-tag=0;h-val.data=ch;else h=null;ch=*s+;if (h!=null)if (ch=,)h-link=creatgl(s);elseh-link=null;retur

13、n h;int gllength(glnode *g)int n=0;g=g-val.sublist;while (g!=null)n+;g=g-link;return n;int gldepth(glnode *g)int max=0,dep; if (g-tag=0) return 0;g=g-val.sublist;if (g=null)return 1;while (g!=null)if (g-tag=1)dep=gldepth(g);if (depmax) max=dep;g=g-link;return(max+1);void dispgl(glnode *g)if (g!=null)if (g-tag=1)printf();if (g-val.sublist=null) printf();else dispgl(g-val.sublist);else printf(%c, g-val.data);if (g-tag=1) printf();if (g-link!=null)print

溫馨提示

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

評論

0/150

提交評論