




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
/實(shí)驗(yàn)?zāi)康模赫莆請(qǐng)D的存儲(chǔ)表示和以及圖的最小生成樹算法。二、實(shí)驗(yàn)內(nèi)容:實(shí)現(xiàn)圖的存儲(chǔ).并且讀入圖的內(nèi)容。利用克魯斯卡爾算法求網(wǎng)絡(luò)的最小生成樹。實(shí)現(xiàn)構(gòu)造生成樹過(guò)程中的連通分量抽象數(shù)據(jù)類型。以文本形式輸出對(duì)應(yīng)圖的最小生成樹各條邊及權(quán)值。三、實(shí)驗(yàn)要求:在上機(jī)前寫出全部源程序;能在機(jī)器上正確運(yùn)行程序;用戶界面友好。需求分析:1、利用克魯斯卡爾算法求網(wǎng)的最小生成樹;2、以用戶指定的結(jié)點(diǎn)為起點(diǎn),分別輸出每種遍歷下的結(jié)點(diǎn)訪問(wèn)序列;3、輸入為存在邊的頂點(diǎn)對(duì).以及它們之間的權(quán)值;輸出為所得到的鄰接矩陣以及按權(quán)排序后的邊和最后得到的最小生成樹;克魯斯卡爾算法:假設(shè)WN=<V,{E}>是一個(gè)含有n個(gè)頂點(diǎn)的連通網(wǎng).按照構(gòu)造最小生成樹的過(guò)程為:先構(gòu)造一個(gè)只含n個(gè)頂點(diǎn).而邊集為空的子圖.之后.從網(wǎng)的邊集E中選取一條權(quán)值最小的邊.若該條邊的兩個(gè)頂點(diǎn)分屬不同的樹.則將其加入子圖.反之.若該條邊的兩個(gè)頂點(diǎn)已落在同一棵樹上.則不可取.而應(yīng)該取下一條權(quán)值最小的邊再試之。依次類推.直至只有一棵樹.也即子圖中含有n-1條邊為止。測(cè)試數(shù)據(jù):自行指定圖進(jìn)行運(yùn)算四、詳細(xì)設(shè)計(jì)源程序#include<stdio.h>#include<stdlib.h>#defineM20#defineMAX20typedefstruct{intbegin;intend;intweight;}edge;typedefstruct{intadj;intweight;}AdjMatrix[MAX][MAX];typedefstruct{AdjMatrixarc;intvexnum,arcnum;}MGraph;voidCreatGraph<MGraph*>;voidsort<edge*,MGraph*>;voidMiniSpanTree<MGraph*>;intFind<int*,int>;voidSwapn<edge*,int,int>;voidCreatGraph<MGraph*G>{inti,j,n,m;printf<"請(qǐng)輸入邊數(shù)和頂點(diǎn)數(shù):">;scanf<"%d%d",&G->arcnum,&G->vexnum>;for<i=1;i<=G->vexnum;i++>{for<j=1;j<=G->vexnum;j++>{G->arc[i][j].adj=G->arc[j][i].adj=0;}}for<i=1;i<=G->arcnum;i++>{printf<"\n請(qǐng)輸入有邊的2個(gè)頂點(diǎn)">;scanf<"%d%d",&n,&m>;while<n<0||n>G->vexnum||m<0||n>G->vexnum>{printf<"輸入的數(shù)字不符合要求請(qǐng)重新輸入:">;scanf<"%d%d",&n,&m>;}G->arc[n][m].adj=G->arc[m][n].adj=1;getchar<>;printf<"\n請(qǐng)輸入%d與%d之間的權(quán)值:",n,m>;scanf<"%d",&G->arc[n][m].weight>;}printf<"鄰接矩陣為:\n">;for<i=1;i<=G->vexnum;i++>{for<j=1;j<=G->vexnum;j++>{printf<"%d",G->arc[i][j].adj>;}printf<"\n">;}}voidsort<edgeedges[],MGraph*G>{inti,j;for<i=1;i<G->arcnum;i++>{for<j=i+1;j<=G->arcnum;j++>{if<edges[i].weight>edges[j].weight>{Swapn<edges,i,j>;}}}printf<"權(quán)排序之后的為:\n">;for<i=1;i<G->arcnum;i++>{printf<"<<%d,%d>>%d\n",edges[i].begin,edges[i].end,edges[i].weight>;}}voidSwapn<edge*edges,inti,intj>{inttemp;temp=edges[i].begin;edges[i].begin=edges[j].begin;edges[j].begin=temp;temp=edges[i].end;edges[i].end=edges[j].end;edges[j].end=temp;temp=edges[i].weight;edges[i].weight=edges[j].weight;edges[j].weight=temp;}voidMiniSpanTree<MGraph*G>{inti,j,n,m;intk=1;intparent[M];edgeedges[M];for<i=1;i<G->vexnum;i++>{for<j=i+1;j<=G->vexnum;j++>{if<G->arc[i][j].adj==1>{edges[k].begin=i;edges[k].end=j;edges[k].weight=G->arc[i][j].weight;k++;}}}sort<edges,G>;for<i=1;i<=G->arcnum;i++>{parent[i]=0;}printf<"最小生成樹為:\n">;for<i=1;i<=G->arcnum;i++>{n=Find<parent,edges[i].begin>;m=Find<parent,edges[i].end>;if<n!=m>{parent[n]=m;printf<"<<%d,%d>>%d\n",edges[i].begin,edges[i].end,edges[i].weight>;}}}intFind<int*parent,intf>{while<parent[f]>0>{f=parent[f];}returnf;}intmain<void>{MGraph*G;G=<MGraph*>malloc<sizeof<MGraph>>;if<G==NULL>{printf<"memoryallcationfailed,goodbye">;exit<1>;}CreatGraph<G>;MiniSpanTree<G>;system<"pause">;return0;}運(yùn)行結(jié)果:五、實(shí)驗(yàn)總結(jié)〔結(jié)果分析和體會(huì)在編程時(shí).因?yàn)榭紤]的情況比較多.所以容易造成錯(cuò)誤和遺漏.為了避免這些問(wèn)題的出現(xiàn).可以先用筆把所有的程序在紙上.然后再根據(jù)列表編寫程序.這樣不僅簡(jiǎn)單易懂.還避免了一些不必要的錯(cuò)誤。編寫完程序后進(jìn)行調(diào)試.發(fā)現(xiàn)有很多錯(cuò)誤.其中也不乏一些基本的小錯(cuò)誤.所以程序?qū)懲旰筮M(jìn)行靜態(tài)檢查是必不可少的.其次是邏輯上的錯(cuò)誤.對(duì)于這些錯(cuò)誤.只能再認(rèn)真檢查整個(gè)程序.這就要求我們?cè)诰幊虝r(shí)考慮要周到.或者可以請(qǐng)其他同學(xué)幫忙檢查。通過(guò)這次對(duì)算術(shù)表達(dá)式求值的設(shè)計(jì).讓我自己對(duì)克魯斯卡爾算法的運(yùn)用更深刻.能
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 3588-2019水稻-中華鱉共作技術(shù)規(guī)程
- DB32/T 1580-2019地理標(biāo)志產(chǎn)品射陽(yáng)大米
- DB32/ 4385-2022鍋爐大氣污染物排放標(biāo)準(zhǔn)
- DB31/T 606-2012立桿掛旗廣告設(shè)置技術(shù)規(guī)范
- DB31/T 583-2012社區(qū)公益服務(wù)項(xiàng)目績(jī)效評(píng)估導(dǎo)則
- DB31/ 897-2015預(yù)拌砂漿單位產(chǎn)品綜合能源消耗限額
- 2025電纜采購(gòu)合同格式范本
- 谷物磨制在糧食加工產(chǎn)業(yè)促進(jìn)農(nóng)產(chǎn)品加工副產(chǎn)物利用的研究考核試卷
- 玩具企業(yè)的品牌傳播與公關(guān)策略考核試卷
- 深海油氣鉆探設(shè)備故障樹分析考核試卷
- 22S803 圓形鋼筋混凝土蓄水池
- 電信運(yùn)營(yíng)商社會(huì)渠道管理報(bào)告
- 2022-2023學(xué)年寧夏回族石嘴山市大武口區(qū)小學(xué)六年級(jí)第二學(xué)期小升初數(shù)學(xué)試卷含答案
- 經(jīng)濟(jì)與社會(huì):如何用決策思維洞察生活學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 綠化設(shè)備車輛管理維護(hù)方案
- 2023汽車智能座艙分級(jí)與綜合評(píng)價(jià)白皮書
- 職業(yè)暴露針刺傷應(yīng)急預(yù)案演練腳本-
- 外科學(xué)教學(xué)課件:腸梗阻闌尾炎
- 國(guó)開電大 可編程控制器應(yīng)用實(shí)訓(xùn) 形考任務(wù)4實(shí)訓(xùn)報(bào)告
- 中國(guó)神華能源股份有限公司大柳塔煤礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 抗菌藥物使用分級(jí)授權(quán)表
評(píng)論
0/150
提交評(píng)論