高校專(zhuān)用通信網(wǎng)絡(luò)建設(shè)概要_第1頁(yè)
高校專(zhuān)用通信網(wǎng)絡(luò)建設(shè)概要_第2頁(yè)
高校專(zhuān)用通信網(wǎng)絡(luò)建設(shè)概要_第3頁(yè)
高校專(zhuān)用通信網(wǎng)絡(luò)建設(shè)概要_第4頁(yè)
高校專(zhuān)用通信網(wǎng)絡(luò)建設(shè)概要_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、淮 海 工 學(xué) 院 計(jì)算機(jī)工程學(xué)院 課程設(shè)計(jì)報(bào)告設(shè)計(jì)名稱(chēng):選題名稱(chēng):數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)高校專(zhuān)用通信網(wǎng)絡(luò)建設(shè)姓名:學(xué)號(hào):專(zhuān)業(yè)班級(jí):系 (院):設(shè)計(jì)時(shí)間:設(shè)計(jì)地點(diǎn):計(jì)算機(jī)科學(xué)計(jì)算機(jī)工程學(xué)院2014.12.222015.1.4計(jì)算機(jī)實(shí)驗(yàn)室、教室指導(dǎo)教師評(píng)語(yǔ):成績(jī):簽名:年月日數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第1頁(yè),共頁(yè)1課程設(shè)計(jì)目的1、 訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識(shí),獨(dú)立完成問(wèn)題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識(shí),編寫(xiě)程 序求解指定問(wèn)題。2、 初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;3、 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力;4、 訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)

2、范進(jìn)行軟件開(kāi)發(fā),鞏固、深化學(xué)生的理論知識(shí),提高編 程水平,并在此過(guò)程中培養(yǎng)他們嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。2課程設(shè)計(jì)任務(wù)與要求:任務(wù)根據(jù)教材數(shù)據(jù)結(jié)構(gòu)-c 語(yǔ)言描述(耿國(guó)華主編)和參考書(shū)數(shù)據(jù)結(jié)構(gòu)題集(c 語(yǔ)言版)(嚴(yán) 蔚敏、吳偉民主編)選擇課程設(shè)計(jì)題目,要求通過(guò)設(shè)計(jì),在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié) 構(gòu)的選擇應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面加深對(duì)課程基本內(nèi)容的理解和綜合運(yùn)用。設(shè)計(jì)題目從任務(wù)書(shū)所列選題表中選取,每班每題不得超過(guò) 2 人。學(xué)生自選課題。學(xué)生原則上可以結(jié)合個(gè)人愛(ài)好自選課題,要求課題有一定的深度與難度,有一定的算法復(fù)雜性, 能夠鞏固數(shù)據(jù)結(jié)構(gòu)課程所學(xué)的知識(shí)。學(xué)生自選課題需在 18

3、周前報(bào)課程設(shè)計(jì)指導(dǎo)教師批準(zhǔn)方可生效。要求:1、 在處理每個(gè)題目時(shí),要求從分析題目的需求入手,按設(shè)計(jì)抽象數(shù)據(jù)類(lèi)型、構(gòu)思算法、通過(guò)設(shè) 計(jì)實(shí)現(xiàn)抽象數(shù)據(jù)類(lèi)型、編制上機(jī)程序和上機(jī)調(diào)試等若干步驟完成題目,最終寫(xiě)出完整的分析報(bào)告。前 期準(zhǔn)備工作完備與否直接影響到后序上機(jī)調(diào)試工作的效率。在程序設(shè)計(jì)階段應(yīng)盡量利用已有的標(biāo)準(zhǔn)函 數(shù),加大代碼的重用率。2、 設(shè)計(jì)的題目要求達(dá)到一定工作量(300 行以上代碼),并具有一定的深度和難度。3、 程序設(shè)計(jì)語(yǔ)言推薦使用 c/c+,程序書(shū)寫(xiě)規(guī)范,源程序需加必要的注釋;4、 每位同學(xué)需提交可獨(dú)立運(yùn)行的程序;5、 每位同學(xué)需獨(dú)立提交設(shè)計(jì)報(bào)告書(shū)(每人一份),要求編排格式統(tǒng)一、規(guī)范、內(nèi)

4、容充實(shí),不少 于 10 頁(yè)(代碼不算);6、 課程設(shè)計(jì)實(shí)踐作為培養(yǎng)學(xué)生動(dòng)手能力的一種手段,單獨(dú)考核。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第2頁(yè),共頁(yè)3課程設(shè)計(jì)說(shuō)明書(shū)一 需求分析問(wèn)題描述中國(guó)移動(dòng)公司正在積極推廣 3g 通信應(yīng)用,計(jì)劃在江蘇高校之間建立一個(gè)專(zhuān)用通信網(wǎng)絡(luò),請(qǐng)為其 規(guī)劃一個(gè)投資最省的通信線路架設(shè)方案。數(shù)據(jù)需求高校(高校名稱(chēng),地址,數(shù)量)高校間的線路線路的成本功能需求能夠構(gòu)造通信網(wǎng)絡(luò)系統(tǒng),編輯通信網(wǎng)絡(luò)系統(tǒng),銷(xiāo)毀通信網(wǎng)絡(luò)系統(tǒng),添加高校,刪除高校,修改高 校名,添加高校間的線路,刪除高校間的線路,修改線路的成本,能生成最佳方案,輸出通信網(wǎng)絡(luò)系 統(tǒng),保存通信網(wǎng)絡(luò)系統(tǒng)。性能需求輸出方案的結(jié)果直觀、明確二 概要設(shè)

5、計(jì)高校專(zhuān)用通信網(wǎng)絡(luò)建設(shè)構(gòu)造通信網(wǎng)絡(luò)編輯通信網(wǎng)絡(luò)生成最佳方案輸出通信網(wǎng)絡(luò)保存通信網(wǎng)絡(luò)銷(xiāo)毀通信網(wǎng)絡(luò)添加刪除高校修改高校名添加刪除高校修改線路成本間的線路adt linearlist數(shù)據(jù)元素:d=a |a d ,i=1,2,n,n0,d 為高校i i 0 0關(guān)系:s=a ,a |a ,a d ,i=1,2,n-1i i+1 i i+1 0基本操作:initlist(l) 初始化 l 為空表destorylist(l) 銷(xiāo)毀 lclearlist(l) 將 l 置為空表listlength(l) 若 l 為空表則返回 0,否則返回表中元素個(gè)數(shù) locate(l,e) 若 l 中存在元素 e 則將當(dāng)前指

6、針指向 e 所在位置并返回真 getdata(l,i) 返回 l 中第 i 個(gè)元素的值inslist(l,i,e) 在 l 中第 i 個(gè)位置插入 e,l 的長(zhǎng)度增加 1 dellist(l,i,&e) 刪除 l 的第 i 個(gè)元素,并用 e 返回其值,l 長(zhǎng)度減少 1 adt linearlist數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第3頁(yè),共頁(yè)數(shù)據(jù)定義:typedef struct arcnodeint adj;/權(quán)值arcnode;typedef struct string vexsmax_vertex_num;/頂點(diǎn)arcnode arcsmax_vertex_nummax_vertex_num;/鄰接矩陣

7、int vexnum,arcnum;/頂點(diǎn)數(shù)和邊數(shù)graph;/圖的類(lèi)型typedef structstring adjvex;int lowcost;minside;/求最小生成樹(shù)時(shí)的輔助數(shù)組的類(lèi)void menu(graph *g); /菜單void editgraph(graph *g); /編輯通信網(wǎng)絡(luò)系統(tǒng)int creategraph(graph *g) /創(chuàng)建通信網(wǎng)絡(luò)系統(tǒng)int insertvex(graph *g,string v) /添加高校void changevex(graph *g,string v) /修改高校名int insertarc(graph *g,string

8、 v,string w) /添加高校間的路線int deletearc(graph *g,string v,string w) /刪除高校間的路線void changeweight(graph *g,string v,string w) /修改高校間的路線及其成本 int destroygraph(graph *g) /銷(xiāo)毀通信網(wǎng)絡(luò)系統(tǒng)int display(graph *g) /輸出通信網(wǎng)絡(luò)系統(tǒng)void save(graph *g) /保存通信網(wǎng)絡(luò)系統(tǒng)main()主函數(shù)menu()菜單m ninputnumber(m)creategraph() insertvex()deletevex()

9、changevex()destorygraph()三 詳細(xì)設(shè)計(jì)創(chuàng)建通信系統(tǒng)int creategraph(graph *g)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第4頁(yè),共頁(yè)int i,j,k,w;string va,vb;讀取文件通信網(wǎng)絡(luò).txtif(未找到文件)coutopen error!(*g).vexsi;初始化鄰接矩陣for(j=0;j(*g).vexnum;+j)(*g).arcsij.adj=infinity; /網(wǎng)for(k=0;kvavbw;i =locatevex(g,va);j =locatevex(g,vb);無(wú)向網(wǎng)infile.close();return 1;開(kāi)始創(chuàng)建通信系統(tǒng)能否讀

10、取文件nyopen error創(chuàng)建成功數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第5頁(yè),共頁(yè)結(jié)束添加高校int insertvex(graph *g,string v) /在圖 g 中增添新頂點(diǎn) vif(頂點(diǎn)數(shù)為 0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n; system(暫停);editgraph(g);coutv;int n=locatevex(g,v);if(高校名重復(fù))cout該高校已存在!n; system(暫停);editgraph(g);int i;構(gòu)造新頂點(diǎn)向量for(i=0;i=(*g).vexnum;i+)初始化該行鄰接矩陣的值初始化該列鄰接矩陣的值圖 g 的頂點(diǎn)數(shù)加 1return 1;刪除學(xué)校int

11、 deletevex(graph *g,string v) / 刪除 g 中頂點(diǎn) v 及其相關(guān)的弧if(頂點(diǎn)數(shù)為 0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n; system(暫停);editgraph(g);int k=locatevex(g,v);if(k0)cout不存在該學(xué)校!n; system(暫停);數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第6頁(yè),共頁(yè)editgraph(g);int i,j;int m=0;if( v 不是圖 g 的頂點(diǎn))return 0;m=無(wú)限;for(j=0;j(*g).vexnum;j+)if(有入弧或邊)修改弧數(shù)for(序號(hào) k 后面的頂點(diǎn)向量依次前移) (*g).vexsj-1=(

12、*g).vexsj;for(i=0;i(*g).vexnum;i+)for(j=k+1;j(*g).vexnum;j+)移動(dòng)待刪除頂點(diǎn)之后的矩陣元素 for(i=0;i(*g).vexnum;i+)for(j=k+1;j(*g).vexnum;j+)移動(dòng)待刪除頂點(diǎn)之下的矩陣元素更新圖的頂點(diǎn)數(shù)return 1;修改高校名void changevex(graph *g,string v)/修改高校名coutv;int n=locatevex(g,v);if(n0)cout不存在該學(xué)校!n;system(暫停);editgraph(g);string s;couts;g-vexsn=s;添加路線in

13、t insertarc(graph *g,string v,string w)/在 g 中增添弧,若 g 是無(wú)向的,則還增添對(duì)稱(chēng)弧 if(頂點(diǎn)數(shù)為 0)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第7頁(yè),共頁(yè)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n;system(暫停);editgraph(g);coutvw;int v1,w1;v 1=locatevex(g,v); /尾w 1=locatevex(g,w); /頭if(v10|w10|v1=w1)cout高校名輸入錯(cuò)誤!n;system(暫停);editgraph(g);else if(路線兩頭高校名重復(fù))cout該線路已存在!n;system(暫停);editgraph(

14、g);弧或邊數(shù)加 1cout(*g).arcsv1w1.adj;bool bret = cin.good();if(!bret)cout輸入的成本不是整型的!n;system(暫停);exit(0);(*g).arcsw1v1.adj=(*g).arcsv1w1.adj;return 1;刪除線路int deletearc(graph *g,string v,string w) /在 g 中刪除弧,若 g 是無(wú)向的,則還刪除對(duì)稱(chēng)弧 if(頂點(diǎn)數(shù)為 0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n;system(暫停);editgraph(g);coutvw;int n=locatevex(g,v);int

15、m=locatevex(g,w);if(m0|n0|m=n)cout學(xué)校名輸入錯(cuò)誤!n;system(暫停);editgraph(g);else if(花費(fèi)無(wú)限)coutarcsnm.adj=infinity;(*g).arcsmn.adj=(*g).arcsnm.adj;(*g).arcnum-;return 1;四 程序設(shè)計(jì)與調(diào)試分析1. 程序中運(yùn)用到大多的插入與刪除,但應(yīng)前期需求分析的準(zhǔn)備工作不充分,導(dǎo)致程序運(yùn)行功能不全,比如查找時(shí)關(guān)于此書(shū)的信息不能全部顯示出來(lái),并且添加刪除時(shí)庫(kù)存的變化不能直接顯示出來(lái)。 程序的健壯性不能達(dá)到預(yù)期的結(jié)果,這些都是需要改進(jìn)的。2. 在程序中的函數(shù)調(diào)用是個(gè)非

16、常重要的部分,也是經(jīng)常需要用到的,在編寫(xiě)程序過(guò)程中,因?yàn)楹瘮?shù) 調(diào)用不準(zhǔn)確,使得循環(huán)進(jìn)不去,后來(lái)改變函數(shù)的調(diào)用關(guān)系,才達(dá)到了預(yù)期結(jié)果。五 用戶(hù)手冊(cè)【使用說(shuō)明】1. 進(jìn)入高校專(zhuān)用通信網(wǎng)絡(luò)系統(tǒng)2. 選擇 1.構(gòu)造通信網(wǎng)絡(luò)系統(tǒng),顯示出 10 個(gè)高校 45 條線路的通信系統(tǒng)矩陣。3. 若創(chuàng)建成功,選擇 2.編輯通信網(wǎng)絡(luò)系統(tǒng),顯示出功能 18。4. 若要銷(xiāo)毀系統(tǒng),選擇 1.銷(xiāo)毀通信網(wǎng)絡(luò)系統(tǒng)。5. 若要添加高校,選擇 2.添加一個(gè)高校,并輸入要添加的高校名。6. 若要?jiǎng)h除高校,選擇 3.刪除一個(gè)高校,并輸入要?jiǎng)h除的高校名。若輸入的高校名不存在,則顯示 不存在該學(xué)校。7. 若要修改高校名,選擇 4.修改高校名

17、,并輸入要修改的高校名。若輸入的高校名不存在,則顯示 不存在該學(xué)校。8. 若要添加高校間的線路,選擇 5.添加一條高線間的線路,并輸入要添加線路兩端的高校名。若輸數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第9頁(yè),共頁(yè)入的高校名錯(cuò)誤在則顯示學(xué)校名輸入錯(cuò)誤。9. 若要?jiǎng)h除高線間的線路,選擇 6.刪除一條高校間的線路,并輸入要?jiǎng)h除線路兩端的高校名。若輸 入的高校名不存在則顯示學(xué)校名輸入錯(cuò)誤。10. 若要修改線路的成本,選擇 7.修改線路的成本,并輸入要?jiǎng)h除線路連段的高校名。若輸入的高校 名不存在則顯示學(xué)校名輸入錯(cuò)誤。11. 若要推出編輯通信網(wǎng)絡(luò)系統(tǒng),選擇 8.退出?;氐礁咝?zhuān)用通信網(wǎng)絡(luò)建設(shè)系統(tǒng)。12. 若要生成最佳方案,

18、選擇 3.生成最佳方案。并輸入起始學(xué)校和要保存的文件名。13. 若要輸出通信網(wǎng)絡(luò)系統(tǒng),選擇 4.輸出通信網(wǎng)絡(luò)系統(tǒng)。14. 若要保存通信網(wǎng)絡(luò)系統(tǒng),選擇 5.保存通信網(wǎng)絡(luò)系統(tǒng)。并輸入要保存的文件名。15. 退出,選擇 6.退出系統(tǒng)。六 測(cè)試成果構(gòu)造通信網(wǎng)絡(luò)系統(tǒng)編輯通信網(wǎng)絡(luò)系統(tǒng),添加一個(gè)高校刪除一個(gè)高校數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第10頁(yè),共頁(yè)修改高校名添加一條高校間的線路刪除高校間的線路數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第11 頁(yè),共頁(yè)修改高校間的成本生成最佳路線輸出通信網(wǎng)絡(luò)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第12頁(yè),共頁(yè)保存通信網(wǎng)絡(luò)系統(tǒng)七 附錄(源程序清單) #include stdafx.h#include #include

19、 #include #include #include #define max_vertex_num 30#define infinity 32768using namespace std;typedef struct arcnode數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第13頁(yè),共頁(yè)int adj;/權(quán)值arcnode;typedef structstring vexsmax_vertex_num;/頂點(diǎn)arcnode arcsmax_vertex_nummax_vertex_num;/鄰接矩陣 int vexnum,arcnum;/頂點(diǎn)數(shù)和邊數(shù)graph;/圖的類(lèi)型void menu(graph *g);v

20、oid editgraph(graph *g);int locatevex(graph *g,string v)/求頂點(diǎn)位置函數(shù),若 v 存在,輸出 j;若不存在,輸出 0 int j=-1,k;for(k=0;kvexnum;k+)if(g-vexsk=v)/判斷是否存在頂點(diǎn) vj=k;break;return j;int creategraph(graph *g)/采用鄰接矩陣法,構(gòu)造有向網(wǎng) gint i,j,k,w;string va,vb;ifstream infile(通信網(wǎng)絡(luò).txt,ios:in);/從文件中讀入數(shù)據(jù)if(!infile) coutopen error!g-vex

21、num;/從文件讀入頂點(diǎn)數(shù)infileg-arcnum;/從文件讀入邊數(shù)for(i=0;ivexnum;+i) /頂點(diǎn)向量infile(*g).vexsi;for(i=0;i(*g).vexnum;+i) /初始化鄰接矩陣 for(j=0;j(*g).vexnum;+j)(*g).arcsij.adj=infinity; /網(wǎng)for(k=0;kvavbw;i =locatevex(g,va);j =locatevex(g,vb);(*g).arcsij.adj=(*g).arcsji.adj=w; /無(wú)向網(wǎng) infile.close();return 1;int insertvex(graph

22、 *g,string v) /在圖 g 中增添新頂點(diǎn) vif(g-vexnum=0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n; system(pause);editgraph(g);coutv;數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第15頁(yè),共頁(yè)int n=locatevex(g,v);if(n=0&v=g-vexsn)cout該高校已存在!n;system(pause);editgraph(g);int i;(*g).vexs(*g).vexnum=v; /構(gòu)造新頂點(diǎn)向量 for(i=0;ivexnum=0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n;system(pause);editgraph(g);int k=locatev

23、ex(g,v);if(k0)cout不存在該學(xué)校!n;system(pause);數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第16頁(yè),共頁(yè)editgraph(g);int i,j;int m=0;if(k0) /v 不是圖 g 的頂點(diǎn)return 0;m=infinity;for(j=0;j(*g).vexnum;j+)if(*g).arcsjk.adj!=m) /有入弧或邊(*g).arcnum-; /修改弧數(shù)for(j=k+1;j(*g).vexnum;j+) /序號(hào) k 后面的頂點(diǎn)向量依次前移 (*g).vexsj-1=(*g).vexsj;for(i=0;i(*g).vexnum;i+)for(j=k+1;

24、j(*g).vexnum;j+)(*g).arcsij-1=(*g).arcsij; /移動(dòng)待刪除頂點(diǎn)之后的矩陣元素 for(i=0;i(*g).vexnum;i+)for(j=k+1;j(*g).vexnum;j+)(*g).arcsj-1i=(*g).arcsji; /移動(dòng)待刪除頂點(diǎn)之下的矩陣元素(*g).vexnum-; /更新圖的頂點(diǎn)數(shù)return 1;void changevex(graph *g,string v)/修改高校名coutv;int n=locatevex(g,v);if(n0)cout不存在該學(xué)校!n;數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第17頁(yè),共頁(yè)system(pause);ed

25、itgraph(g);string s;couts;g-vexsn=s;int insertarc(graph *g,string v,string w)/在 g 中增添弧,若 g 是無(wú)向的,則還增添對(duì)稱(chēng)弧 if(g-vexnum=0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n; system(pause);editgraph(g);coutvw;int v1,w1;v 1=locatevex(g,v); /尾w 1=locatevex(g,w); /頭if(v10|w10|v1=w1) coutarcsv1w1.adj!=infinity)cout該線路已存在!n;system(pause);數(shù)據(jù)結(jié)構(gòu)課

26、程設(shè)計(jì)報(bào)告第18頁(yè),共頁(yè)editgraph(g);(*g).arcnum+; /弧或邊數(shù)加 1cout(*g).arcsv1w1.adj;bool bret = cin.good();if(!bret)cout輸入的成本不是整型的!n; system(pause);exit(0);(*g).arcsw1v1.adj=(*g).arcsv1w1.adj;return 1;int deletearc(graph *g,string v,string w) /在 g 中刪除弧,若 g 是無(wú)向的,則還刪除對(duì)稱(chēng)弧 if(g-vexnum=0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n;system(pause);e

27、ditgraph(g);coutvw;int n=locatevex(g,v);int m=locatevex(g,w);if(m0|n0|m=n)coutarcsnm.adj=infinity)coutarcsnm.adj=infinity;(*g).arcsmn.adj=(*g).arcsnm.adj;(*g).arcnum-;return 1;void changeweight(graph *g,string v,string w)coutvw;int m=locatevex(g,v);int n=locatevex(g,w);if(m0|n0)coutarcsnm.adj=infini

28、ty)cout不存在該線路!n; system(pause);editgraph(g);數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第20頁(yè),共頁(yè)char s;couts;fflush(stdin);bool bret = cin.good();if(!bret)coutarcsmn.adj=g-arcsnm.adj=s;int destroygraph(graph *g) /銷(xiāo)毀圖 gif(g-vexnum=0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n; system(pause);editgraph(g);int i;for(i=0;ivexsi);(*g).vexnum=0;(*g).arcnum=0;return 1;

29、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第21頁(yè),共頁(yè)int display(graph *g)/以矩陣方式輸出圖if(g-vexnum=0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n;system(pause);menu(g);int i,j;coutvexnum個(gè)高校arcnum條線路的通信系統(tǒng)如下面的矩陣:nn; cout ;for(i=0;ivexnum;i+)coutsetw(2) vexsi ;coutendl;for(i=0;ivexnum;i+)coutvexsi ;for(j=0;jvexnum;j+)if(g-arcsij.adj=infinity)coutsetw(5) ;elsecoutsetw(5)

30、arcsij.adj ;coutendl;return 1;/普里姆算法typedef struct數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第22頁(yè),共頁(yè)string adjvex;int lowcost;minside;/求最小生成樹(shù)時(shí)的輔助數(shù)組的類(lèi)int minimum(graph *g,minside closedgemax_vertex_num)/求 closedgei.lowcost 最小值,并返回 iint i=0,j,k,min;while(closedgei.lowcost=0)/找到第一個(gè)值不為 0 的 closedgei.lowcost 的序號(hào) i+;min=closedgei.lowcost

31、;/min 標(biāo)記第一個(gè)不為 0 的值k=i;for(j=i+1;jvexnum;j+)/繼續(xù)查找if(closedgej.lowcost0&closedgej.lowcostvexnum=0)cout未建立通信網(wǎng)絡(luò)系統(tǒng)!n;system(pause);menu(g);couts;int n=locatevex(g,s);數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第23頁(yè),共頁(yè)if(n0)cout不存在該學(xué)校!n;system(pause);menu(g);minside closedgemax_vertex_num;int k=locatevex(g,s);string a30,b30;/a,b為中間變量,用來(lái)存放

32、邊的頂點(diǎn) closedgek.lowcost=0;/初始化,u=sfor(int i=0;ivexnum;i+)/初始化 closedgekif(i!=k)closedgei.adjvex=s;closedgei.lowcost=g-arcski.adj;char name20;coutname;strcat(name,.txt);ofstream outfile(name);outfile最佳方案:n;cout最佳方案:n;for(int e=1;evexnum-1;e+)/找到 n-1 條邊int k0=minimum(g,closedge);string u0=closedgek0.ad

33、jvex;string v0=g-vexsk0; ae=u0;數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第24頁(yè),共頁(yè)be=v0;int m=locatevex(g,u0);int n=locatevex(g,v0);cout(u0v0)t 成本為:arcsmn.adjendl;outfile(u0v0)t 成本為:arcsmn.adjarcsmn.adj;closedgek0.lowcost=0;for(i=0;ivexnum;i+)if(g-arcsk0i.adjarcsk0i.adj;closedgei.adjvex=v0;cout總成本:sumendl;outfile總成本:sumvexnum=0)cout

34、未建立通信網(wǎng)絡(luò)系統(tǒng)!n;system(pause);menu(g);char name20;coutname;數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第25頁(yè),共頁(yè)strcat(name,.txt);ofstream outfile(name);outfilevexnumendl;outfilearcnumendl;for(int n=0;nvexnum;n+)outfilevexsnendl;for(int i=0;ivexnum;i+)for(int j=0;jvexsi);int b=locatevex(g,g-vexsj);int w=g-arcsab.adj;if(w!=infinity)outfile

35、vexsi vexsj wendl;cout保存成功!n;outfile.close();void editgraph(graph *g)system(cls);couttt*n;couttt 1.銷(xiāo)毀通信網(wǎng)絡(luò)系統(tǒng)couttt 2. 添加一個(gè)高校couttt 3. 刪除一個(gè)高校couttt 4. 修改高校名couttt 5. 添加一條高校間的線路n;n;n;n;n;數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第26頁(yè),共頁(yè)couttt 6. 刪除一條高校間的線路couttt 7. 修改線路的成本 couttt 8. 退出n;n;n;couttt*n; coutn;fflush(stdin);switch(n)case

36、 1:destroygraph(g);display(g);cout銷(xiāo)毀成功!n;system(pause);editgraph(g);break;case 2:insertvex(g,v);display(g);cout添加成功!n;system(pause);editgraph(g);break;case 3:coutv;deletevex(g,v);display(g);cout刪除成功!n;數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第27頁(yè),共頁(yè)system(pause);editgraph(g);break;case 4:c hangevex(g,v);d isplay(g);cout修改成功!n;sys

37、tem(pause);editgraph(g);case 5:insertarc(g,v,w);display(g);cout添加成功!n;system(pause);editgraph(g);break;case 6:deletearc(g,v,w);display(g);cout刪除成功!n;system(pause);editgraph(g);break;case 7:c hangeweight(g,v,w);d isplay(g);cout修改成功!n;system(pause);editgraph(g);break;case 8:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第28頁(yè),共頁(yè)menu(g);sy

38、stem(pause);default:cout輸入錯(cuò)誤,請(qǐng)重新輸入!n;system(pause);editgraph(g);break;system(pause);void menu(graph *g)system(cls);couttt*n;couttt高校專(zhuān)用通信網(wǎng)絡(luò)建設(shè)系統(tǒng)nn;couttt 1.構(gòu)造通信網(wǎng)絡(luò)系統(tǒng)couttt 2.編輯通信網(wǎng)絡(luò)系統(tǒng)couttt 3.生成最佳方案couttt 4.輸出通信網(wǎng)絡(luò)系統(tǒng)couttt 5.保存通信網(wǎng)絡(luò)系統(tǒng) couttt 6.退出系統(tǒng)n;n;n;n;n;n;couttt*n; coutn;switch(n)case 1:c reategraph(g);d isplay(g);數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告第29頁(yè),共頁(yè)cout創(chuàng)建成功!n; system(pause);menu(g);break;case 2:editgraph(g);break;case 3:minispantree_prim(g,v);system(pause);menu(g);break;case 4:display(g);system(pause);menu(g);break;case 5:save(g);system(pause);menu(g);break;case 6:cout退出程序,謝謝使用!n; exit(0);de

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論