版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 數(shù) 據(jù) 結(jié) 構(gòu) 課 程 設(shè) 計</p><p> 設(shè)計題目:基于三元組表的存儲結(jié)構(gòu)實(shí)現(xiàn)稀疏矩陣的應(yīng)用</p><p> 學(xué)生姓名: </p><p> 專業(yè)班級: </p><p> 指導(dǎo)教師:
2、 </p><p> 完成時間: </p><p><b> 目 錄</b></p><p> 一、課題設(shè)計目的及意義1</p><p> 1.1、課題設(shè)計目的1</p><p> 1.2、課程設(shè)計意義
3、1</p><p><b> 二、需求分析1</b></p><p> 2.1設(shè)計函數(shù)建立稀疏矩陣及初始化值和輸出稀疏矩陣的值1</p><p> 2.2 構(gòu)造函數(shù)進(jìn)行稀疏矩陣的轉(zhuǎn)置并輸出結(jié)果1</p><p> 2.3 構(gòu)造函數(shù)進(jìn)行兩稀疏矩陣相加、減及相乘并輸出最終稀疏矩陣1</p>&
4、lt;p> 2.4 退出系統(tǒng)2</p><p><b> 三、項(xiàng)目設(shè)計2</b></p><p><b> 3.1結(jié)構(gòu)設(shè)計2</b></p><p><b> 3.2算法思想2</b></p><p><b> 3.3模塊圖2</b&g
5、t;</p><p><b> 3.4流程圖3</b></p><p><b> 四、系統(tǒng)實(shí)現(xiàn)4</b></p><p><b> 4.1主調(diào)函數(shù)4</b></p><p> 4.2三元組表建立4</p><p><b> 4
6、.3矩陣建立4</b></p><p> 4.4矩陣相加減及轉(zhuǎn)置5</p><p><b> 五、系統(tǒng)調(diào)試8</b></p><p> 5.1主菜單輸出8</p><p><b> 5.2矩陣相加9</b></p><p><b>
7、5.3矩陣轉(zhuǎn)置9</b></p><p> 5.4矩陣相減10</p><p><b> 六、實(shí)驗(yàn)總結(jié)10</b></p><p><b> 七、附錄11</b></p><p> 一、課題設(shè)計目的及意義</p><p> 1.1、課題設(shè)計目的
8、</p><p> (1)掌握稀疏矩陣三元組表的存儲,創(chuàng)建,顯示,轉(zhuǎn)置等方法。</p><p> (2)利用三元組表實(shí)現(xiàn)矩陣的相加,減。 </p><p> (3)了解稀疏矩陣的相關(guān)應(yīng)用。</p><p> 1.2、課程設(shè)計意義</p><p> 本次課題設(shè)計可以使我們更熟練的掌握有關(guān)三元組表及稀疏矩
9、陣的相關(guān)知識,比一般存儲方法節(jié)省了存儲空間,基于三元組表的存儲結(jié)構(gòu)實(shí)現(xiàn)了稀疏矩陣的基本操作。</p><p> 本次課程設(shè)計是本組成員共同努力而完成的,第一次進(jìn)行課程設(shè)計是我們的探索過程,這個過程中,我們克服了一個個困難,在摸索中前行,我們相信通過此次課程設(shè)計我們每個人都會對數(shù)據(jù)結(jié)構(gòu)這門課程有更深一步的了解。</p><p><b> 二、需求分析</b><
10、/p><p> 稀疏矩陣是指那些多數(shù)元素為零的矩陣。利用“稀疏”特點(diǎn)進(jìn)行存儲和計算可以大大節(jié)省存儲空間,提高計算效率。實(shí)現(xiàn)一個能進(jìn)行稀疏矩陣基本運(yùn)算的運(yùn)算器。以“帶行邏輯鏈接信息”的三元組順序表表示稀疏矩陣,實(shí)現(xiàn)兩個矩陣相加、相減和相乘的運(yùn)算。稀疏矩陣的輸入形式采用三元組表示,而運(yùn)算結(jié)果的矩陣則通常以陣列形式列出。</p><p> 2.1設(shè)計函數(shù)建立稀疏矩陣及初始化值和輸出稀疏矩陣的值&
11、lt;/p><p> 本模塊要求設(shè)計函數(shù)建立稀疏矩陣并初始化,包括在三元組結(jié)構(gòu)下和十字鏈表結(jié)構(gòu)下。在創(chuàng)建稀疏矩陣時,需要設(shè)計兩個不同的函數(shù)分別在三元組和十字鏈表下創(chuàng)建稀疏矩陣,在輸入出現(xiàn)錯誤時,能夠?qū)﹀e誤進(jìn)行判別處理,初始化稀疏矩陣都為空值。在設(shè)計輸出稀疏矩陣的值的函數(shù)時,也要針對兩種不同的情況,分別編制函數(shù),才能準(zhǔn)確的輸出稀疏矩陣。在對稀疏矩陣進(jìn)行初始化時,只輸入非零元素的值和它所在的所在行及所在列。在對稀疏矩陣
12、輸出時,以矩陣的完整形式輸出。</p><p> 2.2 構(gòu)造函數(shù)進(jìn)行稀疏矩陣的轉(zhuǎn)置并輸出結(jié)果 </p><p> 本模塊要求設(shè)計函數(shù)進(jìn)行稀疏矩陣的轉(zhuǎn)置并輸出轉(zhuǎn)置后的結(jié)果。在編寫函數(shù)時,要先定義一個相應(yīng)的結(jié)構(gòu)體變量用于存放轉(zhuǎn)置后的矩陣,最后把此矩陣輸出。 </p><p> 2.3 構(gòu)造函數(shù)進(jìn)行兩稀疏矩陣相加、減及相乘并輸出最終稀疏矩陣</p>
13、<p> 本模塊要求設(shè)計相加、減和相乘函數(shù)對兩個矩陣進(jìn)行運(yùn)算,并輸出最終的稀疏矩陣,定義相應(yīng)的矩陣類型用于存放兩個矩陣操作后的結(jié)果矩陣,這個結(jié)果矩陣的行、列數(shù)需要綜合多方面情況來確定。這些函數(shù)也是整個程序的難點(diǎn),需要靈活運(yùn)用數(shù)組及指針的特點(diǎn)。</p><p><b> 2.4 退出系統(tǒng) </b></p><p> 本模塊要求設(shè)置選項(xiàng)能隨時結(jié)束程序的運(yùn)行
14、,本程序中采用do-while循環(huán)。程序在計算機(jī)上顯示“提示信息”之后,由用戶在鍵盤上輸入演示程序中需要的相關(guān)信息及命令。 </p><p><b> 三、項(xiàng)目設(shè)計</b></p><p><b> 3.1結(jié)構(gòu)設(shè)計</b></p><p> 1、以“帶行邏輯鏈接信息”的三元組順序表表示稀疏矩陣,實(shí)現(xiàn)兩個矩陣相加、相減
15、和相乘的運(yùn)算</p><p> 2、稀疏矩陣的輸入形式采用三元組表示,而運(yùn)算結(jié)果的矩陣則通常以陣列形式列出。</p><p><b> 3.2算法思想</b></p><p> 1、首先應(yīng)輸入矩陣的行數(shù)和列數(shù)。</p><p> 2、 以“帶行邏輯鏈接信息”的三元組順序表表數(shù),并判別給出的兩個矩陣的行、列數(shù)對于所
16、要求作的運(yùn)算是否相匹配??稍O(shè)矩陣的行數(shù)和列數(shù)均不超過20。</p><p> 3、程序可以對三元組的輸入順序加以限制,例如,按行優(yōu)先。注意研究教材的算法,以便提高計算效率。5.在用三元組表示稀疏矩陣時,相加或相減所得結(jié)果矩陣應(yīng)該另生成,乘積矩陣也可用二維數(shù)組存放。</p><p> 4、主函數(shù)設(shè)置循環(huán)和選擇語句進(jìn)行運(yùn)算循環(huán)和選擇,進(jìn)行稀疏矩陣的加法,減法和轉(zhuǎn)置。</p>
17、<p><b> 3.3模塊圖</b></p><p><b> 3.4流程圖</b></p><p><b> 四、系統(tǒng)實(shí)現(xiàn)</b></p><p><b> 4.1主調(diào)函數(shù)</b></p><p> #include<stdi
18、o.h></p><p> #define smax 16</p><p> typedef int datatype;</p><p> typedef struct</p><p> { int i, j;</p><p> datatype v;</p><p>&l
19、t;b> } node;</b></p><p> typedef struct()</p><p> { int m ,n,t;</p><p> node data[smax];</p><p> }spmatrix;</p><p><b> 4.2三元組表建立</
20、b></p><p> void print(spmatrix *a)</p><p><b> {</b></p><p><b> int k;</b></p><p> for(k=0;k<a->t;k++)</p><p> printf(
21、"%d\t%d\t%d\n",a->data[k].i,a->data[k].j,a->data[k].v);</p><p><b> }</b></p><p><b> 4.3矩陣建立</b></p><p> void printjuzhen(spmatrix *a)&l
22、t;/p><p><b> {</b></p><p> int k,p,l;</p><p> int c[5][5]={{0},{0},{0},{0},{0}};</p><p> for(k=0;k<a->t;k++)</p><p> c[a->data[k].i]
23、[a->data[k].j]=a->data[k].v;</p><p> for(p=0;p<a->m;p++)</p><p> {for(l=0;l<a->n;l++)</p><p> printf("%d\t",c[p][l]);</p><p> printf(&qu
24、ot;\n");</p><p><b> }</b></p><p><b> }</b></p><p> 4.4矩陣相加減及轉(zhuǎn)置</p><p> pmatrix * xiangjia(spmatrix *a,spmatrix *b)</p><p>
25、<b> {</b></p><p> spmatrix *c;</p><p> int pa=0,pb=0,pc=0,sum=0;</p><p> c=(spmatrix *)malloc(sizeof(spmatrix));</p><p> if((a->m==b->m)&&
26、;(a->n==b->n))</p><p><b> {</b></p><p> c->m=a->m;</p><p> c->n=a->n;</p><p> while(pa<a->t&&pb<b->t)</p>&
27、lt;p><b> {</b></p><p> if(a->data[pa].i==b->data[pb].i)</p><p><b> {</b></p><p> if(a->data[pa].j==b->data[pb].j)</p><p><
28、b> {</b></p><p> sum=a->data[pa].v+b->data[pb].v;</p><p><b> if(sum)</b></p><p><b> {</b></p><p> c->data[pc].v=sum;</
29、p><p> c->data[pc].i=a->data[pa].i;</p><p> c->data[pc].j=a->data[pa].j;</p><p><b> pc++;</b></p><p><b> }</b></p><p>
30、<b> pa++;</b></p><p><b> pb++;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><
31、;p> if(a->data[pa].j<b->data[pb].j)</p><p><b> {</b></p><p> if(a->data[pa].v)</p><p><b> {</b></p><p> c->data[pc].v=a-&
32、gt;data[pa].v;</p><p> c->data[pc].i=a->data[pa].i;</p><p> c->data[pc].j=a->data[pa].j;</p><p> pc++;pa++;</p><p><b> }</b></p><
33、p><b> }</b></p><p><b> else</b></p><p> if(b->data[pb].v)</p><p><b> {</b></p><p> c->data[pc].v=b->data[pb].v;<
34、/p><p> c->data[pc].i=b->data[pb].i;</p><p> c->data[pc].j=b->data[pb].j;</p><p> pc++;pb++;</p><p><b> }</b></p><p><b> }&
35、lt;/b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(a->data[pa].i<b->data[pb].i)</p><
36、p><b> {</b></p><p> if(a->data[pa].v)</p><p><b> {</b></p><p> c->data[pc].v=a->data[pa].v;</p><p> c->data[pc].i=a->data
37、[pa].i;</p><p> c->data[pc].j=a->data[pa].j;</p><p> pc++;pa++;</p><p><b> }</b></p><p><b> }</b></p><p><b> else&
38、lt;/b></p><p> if(b->data[pb].v)</p><p><b> {</b></p><p> c->data[pc].v=b->data[pb].v;</p><p> c->data[pc].i=b->data[pb].i;</p>
39、<p> c->data[pc].j=b->data[pb].j;</p><p> pc++;pb++;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
40、<p><b> }</b></p><p><b> else</b></p><p> return(0);</p><p> while(pa<a->t)</p><p><b> {</b></p><p> c
41、->data[pc].v=a->data[pa].v;</p><p> c->data[pc].i=a->data[pa].i;</p><p> c->data[pc].j=a->data[pa].j;</p><p> pc++;pa++;</p><p><b> }</b&
42、gt;</p><p> while(pb<b->t)</p><p><b> {</b></p><p> c->data[pc].v=b->data[pb].v;</p><p> c->data[pc].i=b->data[pb].i;</p><p
43、> c->data[pc].j=b->data[pb].j;</p><p> pc++;pb++;</p><p><b> }</b></p><p><b> c->t=pc;</b></p><p> return(c);</p><p&
44、gt;<b> 五、系統(tǒng)調(diào)試</b></p><p><b> 5.1主菜單輸出</b></p><p><b> 圖1主菜單輸出</b></p><p><b> 5.2矩陣相加</b></p><p><b> 圖2 矩陣相加&l
45、t;/b></p><p><b> 5.3矩陣轉(zhuǎn)置</b></p><p><b> 圖3 矩陣轉(zhuǎn)置</b></p><p><b> 5.4矩陣相減</b></p><p><b> 圖4矩陣相減</b></p><
46、p><b> 六、實(shí)驗(yàn)總結(jié)</b></p><p> 稀疏矩陣這個課題在我們平時上課時我就感覺對于我而言這是比較困難的,矩陣的相關(guān)知識,三元組表的相關(guān)知識也一直讓我比較惶恐,從拿到這個課題開始我就知道這次的課程設(shè)計必須用盡全力去認(rèn)真對待。我深知團(tuán)隊合作的必要性,五個人的智慧總好過自己一個閉門造車,所以在課程設(shè)計過程中我們組進(jìn)行了激烈地討論,齊心協(xié)力地把這次課程設(shè)計做好。首先,我們根
47、據(jù)課程設(shè)計所圍繞的程序進(jìn)行編程以及調(diào)試;其次,根據(jù)課程設(shè)計的要求進(jìn)行實(shí)驗(yàn)?zāi)康囊约皩?shí)驗(yàn)意義的分析;再次之,進(jìn)行需求分析的解決;然后將項(xiàng)目設(shè)計的算法思想,基本算法,主函數(shù)調(diào)用一一呈現(xiàn)出來。這是我們第一次進(jìn)行比較專業(yè)的關(guān)于課程設(shè)計方面的運(yùn)算,關(guān)于三元組表以及稀疏函數(shù)的相關(guān)應(yīng)用,課程設(shè)計過程中,我在利用三元組表實(shí)現(xiàn)稀疏矩陣相加的程序編制中,出現(xiàn)了很多問題,導(dǎo)致最后編譯、執(zhí)行、鏈接時不能成功,后來我查找了資料,去圖書館借了相關(guān)書籍,詢問老師及本組
48、同學(xué),經(jīng)過了好多次的改進(jìn),最后,終于完成了程序的編制。 通過一周的課程設(shè)計使我對數(shù)據(jù)結(jié)構(gòu)有了更深的理解,對以前學(xué)習(xí)中不明白的,不理解的都有了進(jìn)一步的理解。在實(shí)際操作中遇到了很多困難,但通過找資料,請教同學(xué)和老師,使我的動手能力和溝</p><p><b> 七、附錄</b></p><p><b> 參考文獻(xiàn)</b></p>&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于三元組表的存儲結(jié)構(gòu)實(shí)現(xiàn)稀疏矩陣的應(yīng)用課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----三元組表相加
- 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報告(稀疏矩陣)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-稀疏矩陣實(shí)現(xiàn)與應(yīng)用
- 數(shù)據(jù)結(jié)構(gòu)--稀疏矩陣課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---稀疏矩陣
- 數(shù)據(jù)結(jié)構(gòu)-鄰接表存儲及遍歷-課程設(shè)計-實(shí)驗(yàn)報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-- 稀疏矩陣的運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--稀疏矩陣的操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計實(shí)驗(yàn)報告
- 數(shù)據(jù)結(jié)構(gòu)與課程設(shè)計---稀疏矩陣
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計報告--稀疏矩陣運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告--稀疏矩陣運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告 稀疏矩陣運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計論文----稀疏矩陣的轉(zhuǎn)置
- 數(shù)據(jù)結(jié)構(gòu)-串的存儲表示及基本操作--課程設(shè)計-實(shí)驗(yàn)報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告 稀疏矩陣運(yùn)算器設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--稀疏矩陣運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計實(shí)驗(yàn)報告(赫夫曼編碼)
- 數(shù)據(jù)結(jié)構(gòu)實(shí)踐環(huán)節(jié)實(shí)驗(yàn)報告(課程設(shè)計)
評論
0/150
提交評論