下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)選題名稱:高校專(zhuān)用通信網(wǎng)絡(luò)建設(shè)姓名:陳韋迪學(xué)號(hào):2014122778專(zhuān)業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī) 142系 (院):計(jì)算機(jī)工程學(xué)院設(shè)計(jì)時(shí)間:設(shè)計(jì)地點(diǎn):計(jì)算機(jī)實(shí)驗(yàn)室、教室指導(dǎo)教師評(píng)語(yǔ):成績(jī):簽名:年月日.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ī)范進(jìn)行軟件開(kāi)發(fā),鞏固、
2、深化學(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 周前報(bào)課程設(shè)計(jì)指導(dǎo)教師批準(zhǔn)方可生效
3、。要求: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)容充實(shí),不少于10 頁(yè)(代碼不算);6
4、 、課程設(shè)計(jì)實(shí)踐作為培養(yǎng)學(xué)生動(dòng)手能力的一種手段,單獨(dú)考核。.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è)方案?;疽?( 1) 用無(wú)向網(wǎng)模擬該系統(tǒng),頂點(diǎn)表示各高校,邊表示線路建設(shè)成本( 2) 高校數(shù)量不少于 10 個(gè),覆蓋蘇南、蘇中、蘇北、南京等地的高校( 3) 輸出方案的結(jié)果直觀、明確( 4) 交互式改變某些線路的建設(shè)成本,可重新輸出新方案二 概要設(shè)計(jì).3課程設(shè)計(jì)說(shuō)明書(shū)二概要設(shè)計(jì)void menu(graph *g);/ 菜單void Editgraph(graph *g);/
5、編輯通信網(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 v,string w)/ 添加高校間的路線int DeleteArc(graph *g,string v,string w)/ 刪除高校間的路線void ChangeWeight(graph *g,string v,string w)/ 修改高校間的路線及其成本int Destroygraph(g
6、raph *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)基本操作:.InitList(L)初始化 L 為空表DestoryList(L)銷(xiāo)毀 LClearList(L)將 L 置為空表ListLength(L)若 L 為空表則返回 0,否則返回表中元素個(gè)數(shù)Locate(L,e)若 L 中存在元素 e 則將當(dāng)前指針指向e 所在位置并返回真GetData(L,i)返回 L 中第 i 個(gè)元素的值InsList(L,I,e)在 L 中第 i 個(gè)位置插入 e,L 的長(zhǎng)度增加 1DelList(L,I,&a
7、mp;e)刪除 L 的第 i 個(gè)元素,并用 e 返回其值, L 長(zhǎng)度減少 1數(shù)據(jù)定義:typedef struct ArcNodeint adj;/ 權(quán)值A(chǔ)rcNode;typedef struct string vexsMAX_VERTEX_NUM;/頂點(diǎn)ArcNode arcsMAX_VERTEX_NUMMAX_VERTEX_NUM;/鄰接矩陣int vexnum,arcnum;/ 頂點(diǎn)數(shù)和邊數(shù)graph;/ 圖的類(lèi)型typedef struct.string adjvex;int lowcost;minside;/ 求最小生成樹(shù)時(shí)的輔助數(shù)組的類(lèi)三 詳細(xì)設(shè)計(jì)創(chuàng)建通信系統(tǒng)int Create
8、graph(graph *g)int i,j,k,w;string va,vb;讀取文件 "通信網(wǎng)絡(luò) .txt"if(未找到文件 ).cout<<"open error!"<<endl;return 0;從文件讀入頂點(diǎn)數(shù)從文件讀入邊數(shù)頂點(diǎn)向量infile>>(*g).vexsi;初始化鄰接矩陣for(j=0;j<(*g).vexnum;+j)(*g).arcsij.adj=INFINITY; / 網(wǎng)for(k=0;k<(*g).arcnum;+k)infile>>va>>vb>
9、>w;i=LocateVex(g,va);j=LocateVex(g,vb);無(wú)向網(wǎng)infile.close();return 1;添加高校.int InsertVex(graph *g,string v) / 在圖 g 中增添新頂點(diǎn) vif(頂點(diǎn)數(shù)為 0)cout<<" 未建立通信網(wǎng)絡(luò)系統(tǒng) !n"system(暫停 );Editgraph(g);cout<<" 請(qǐng)輸入要添加的高校名 :"cin>>v;int n=LocateVex(g,v);if(高校名重復(fù) )cout<<" 該高校已存在
10、 !n"system(暫停 );Editgraph(g);int i;構(gòu)造新頂點(diǎn)向量for(i=0;i<=(*g).vexnum;i+)初始化該行鄰接矩陣的值初始化該列鄰接矩陣的值.圖 g 的頂點(diǎn)數(shù)加 1 return 1;刪除學(xué)校int 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(k<0)cout<<" 不存
11、在該學(xué)校 !n"system(暫停 );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=(*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).vexnu
12、m;j+)移動(dòng)待刪除頂點(diǎn)之下的矩陣元素更新圖的頂點(diǎn)數(shù)return 1;修改高校名void ChangeVex(graph *g,string v)/修改高校名.cout<<" 請(qǐng)輸入要修改的高校名 :"cin>>v;int n=LocateVex(g,v);if(n<0)cout<<" 不存在該學(xué)校 !n"system(暫停 );Editgraph(g);string s;cout<<" 請(qǐng)輸入修改后的高校名 :"cin>>s;g->vexsn=s;添加路線int
13、 InsertArc(graph *g,string v,string w)/ 在 g 中增添弧 <v,w>, 若 g 是無(wú)向的 ,則還增添對(duì)稱弧 <w,v>if(頂點(diǎn)數(shù)為 0)cout<<" 未建立通信網(wǎng)絡(luò)系統(tǒng) !n"system(暫停 );Editgraph(g);.cout<<" 請(qǐng)輸入要添加的線路的兩端的高校名:"cin>>v>>w;int v1,w1;v1=LocateVex(g,v); / 尾w1=LocateVex(g,w); / 頭if(v1<0|w1<0
14、|v1=w1)cout<<" 高校名輸入錯(cuò)誤 !n"system(暫停 );Editgraph(g);else if(路線兩頭高校名重復(fù) )cout<<" 該線路已存在 !n"system(暫停 );Editgraph(g);弧或邊數(shù)加 1cout<<" 請(qǐng)輸入該條線路的建設(shè)費(fèi)用:"cin>>(*g).arcsv1w1.adj;bool bRet = cin.good();if(!bRet).cout<<" 輸入的成本不是整型的 !n"system(暫停
15、);exit(0);(*g).arcsw1v1.adj=(*g).arcsv1w1.adj;return 1;刪除線路int DeleteArc(graph *g,string v,string w) / 在 g 中刪除弧 <v,w>, 若 g 是無(wú)向的 ,則還刪除對(duì)稱弧 <w,v> if(頂點(diǎn)數(shù)為 0)cout<<" 未建立通信網(wǎng)絡(luò)系統(tǒng) !n"system(暫停 );Editgraph(g);cout<<" 請(qǐng)輸入要?jiǎng)h除的線路的兩端的高校名:"cin>>v>>w;int n=Loc
16、ateVex(g,v);int m=LocateVex(g,w);if(m<0|n<0|m=n).cout<<" 學(xué)校名輸入錯(cuò)誤 !n"system(暫停 );Editgraph(g);else if(花費(fèi)無(wú)限 )cout<<" 不存在該線路 !n"system(暫停 );編輯g->arcsnm.adj=INFINITY;(*g).arcsmn.adj=(*g).arcsnm.adj;(*g).arcnum-;return 1;四 程序設(shè)計(jì)與調(diào)試分析1.因?yàn)榍捌谛枨蠓治龅臏?zhǔn)備工作不充分,程序運(yùn)行功能不全,程序中運(yùn)
17、用到大多的插入與刪除,比如查找時(shí)關(guān)于線路的信息不能全部顯示出來(lái),并且添加刪除時(shí)線路的變化不能直接顯示出來(lái)。程序的健壯性不能達(dá)到預(yù)期的結(jié)果,這些都是需要改進(jìn)的。2. 在編寫(xiě)程序過(guò)程中,因?yàn)楹瘮?shù)調(diào)用不準(zhǔn)確,使得循環(huán)進(jìn)不去,在程序中的函數(shù)調(diào)用是個(gè)非常重要的部分,也是經(jīng)常需要用到的,為了達(dá)到了預(yù)期結(jié)果,后來(lái)改變函數(shù)的調(diào)用關(guān)系,。五 用戶手冊(cè).【使用說(shuō)明】1.使用高校專(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è)高校,并輸入要
18、添加的高校名。6.刪除高校,選擇 3.刪除一個(gè)高校,并輸入要?jiǎng)h除的高校名。若輸入的高校名不存在,則顯示不存在該學(xué)校。7.修改高校名,選擇4.修改高校名,并輸入要修改的高校名。若輸入的高校名不存在,則顯示不存在該學(xué)校。8.添加高校間的線路,選擇5.添加一條高線間的線路,輸入要添加線路兩端的高校名。若輸入的高校名錯(cuò)誤在則顯示學(xué)校名輸入錯(cuò)誤。9.刪除高線間的線路,選擇6.刪除一條高校間的線路,并輸入要?jiǎng)h除線路兩端的高校名。若輸入的高校名不存在則顯示學(xué)校名輸入錯(cuò)誤。10.修改線路的成本,選擇7.修改線路的成本,并輸入要?jiǎng)h除線路連段的高校名。若輸入的高校名不存在則顯示學(xué)校名輸入錯(cuò)誤。11.推出編輯通信網(wǎng)
19、絡(luò)系統(tǒng),選擇8.退出?;氐礁咝?zhuān)用通信網(wǎng)絡(luò)建設(shè)系統(tǒng)。12.生成最佳方案,選擇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è)試成果.1.通信網(wǎng)絡(luò)系統(tǒng)2.添加一個(gè)高校3.刪除一個(gè)高校4.修改高校名.5.添加一條高校間的線路6.刪除高校間的線路7.修改高校間的成本8.生成最佳路線.9.輸出通信網(wǎng)絡(luò)系統(tǒng)10.保存通信網(wǎng)絡(luò)系統(tǒng).七 附錄(源程序清單)#include "stdafx.h"#include <iost
20、ream>#include <iomanip>#include <windows.h>#include <fstream>#include <string>#define MAX_VERTEX_NUM 30#define INFINITY 32768using namespace std;typedef struct ArcNodeint adj;/ 權(quán)值A(chǔ)rcNode;typedef structstring vexsMAX_VERTEX_NUM;/ 頂點(diǎn)ArcNode arcsMAX_VERTEX_NUMMAX_VERTEX_NUM;/
21、鄰接矩陣int vexnum,arcnum;/頂點(diǎn)數(shù)和邊數(shù)graph;/ 圖的類(lèi)型void menu(graph *g);void Editgraph(graph *g);int LocateVex(graph *g,string v)/求頂點(diǎn)位置函數(shù),若 v 存在 ,輸出 j;若不存在 ,輸出 0int j=-1,k;for(k=0;k<g->vexnum;k+)if(g->vexsk=v)/判斷是否存在頂點(diǎn)v.j=k;break;return j;int Creategraph(graph *g)/采用鄰接矩陣法,構(gòu)造有向網(wǎng)gint i,j,k,w;string va,v
22、b;ifstream infile(" 通信網(wǎng)絡(luò) .txt",ios:in);/ 從文件中讀入數(shù)據(jù)if(!infile)cout<<"open error!"<<endl;return 0;infile>>g->vexnum;/從文件讀入頂點(diǎn)數(shù)infile>>g->arcnum;/從文件讀入邊數(shù)for(i=0;i<g->vexnum;+i) /頂點(diǎn)向量infile>>(*g).vexsi;for(i=0;i<(*g).vexnum;+i) /初始化鄰接矩陣for(j
23、=0;j<(*g).vexnum;+j)(*g).arcsij.adj=INFINITY; /網(wǎng)for(k=0;k<(*g).arcnum;+k)infile>>va>>vb>>w;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 *g,string v)/ 在圖 g 中增添新頂點(diǎn)vif(g->vexnum=0)cout<<" 未建
24、立通信網(wǎng)絡(luò)系統(tǒng)!n"system("pause");Editgraph(g);cout<<" 請(qǐng)輸入要添加的高校名:"cin>>v;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;i<=(*g).vexnum;i+)(*
25、g).arcs(*g).vexnumi.adj=INFINITY; /初始化該行鄰接矩陣的值(*g).arcsi(*g).vexnum.adj=INFINITY; /初始化該列鄰接矩陣的值(*g).vexnum+=1; /圖 g 的頂點(diǎn)數(shù)加1.return 1;int DeleteVex(graph *g,string v) / 刪除 g 中頂點(diǎn) v 及其相關(guān)的弧 if(g->vexnum=0)cout<<" 未建立通信網(wǎng)絡(luò)系統(tǒng)!n"system("pause");Editgraph(g);int k=LocateVex(g,v);if
26、(k<0)cout<<" 不存在該學(xué)校 !n"system("pause");Editgraph(g);int i,j;int m=0;if(k<0) /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<
27、(*g).vexnum;i+)for(j=k+1;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)/修改高校名cout<<" 請(qǐng)輸入要修改的高校名:"cin&g
28、t;>v;int n=LocateVex(g,v);if(n<0)cout<<" 不存在該學(xué)校 !n"system("pause");Editgraph(g);string s;cout<<" 請(qǐng)輸入修改后的高校名:"cin>>s;g->vexsn=s;int InsertArc(graph *g,string v,string w)/ 在 g 中增添弧 <v,w>, 若 g 是無(wú)向的 ,則還增添對(duì)稱弧<w,v>if(g->vexnum=0)cout&
29、lt;<" 未建立通信網(wǎng)絡(luò)系統(tǒng)!n".system("pause");Editgraph(g);cout<<" 請(qǐng)輸入要添加的線路的兩端的高校名:"cin>>v>>w;int v1,w1;v1=LocateVex(g,v); /尾w1=LocateVex(g,w); /頭if(v1<0|w1<0|v1=w1)cout<<" 高校名輸入錯(cuò)誤!n"system("pause");Editgraph(g);else if(g->a
30、rcsv1w1.adj!=INFINITY)cout<<" 該線路已存在 !n"system("pause");Editgraph(g);(*g).arcnum+; /弧或邊數(shù)加1cout<<" 請(qǐng)輸入該條線路的建設(shè)費(fèi)用:"cin>>(*g).arcsv1w1.adj;bool bRet = cin.good();if(!bRet)cout<<" 輸入的成本不是整型的!n"system("pause");exit(0);.(*g).arcsw1v1
31、.adj=(*g).arcsv1w1.adj;return 1;int DeleteArc(graph *g,string v,string w) / 在 g 中刪除弧 <v,w>, 若 g 是無(wú)向的 ,則還刪除對(duì)稱弧 <w,v> if(g->vexnum=0)cout<<" 未建立通信網(wǎng)絡(luò)系統(tǒng)!n"system("pause");Editgraph(g);cout<<" 請(qǐng)輸入要?jiǎng)h除的線路的兩端的高校名:"cin>>v>>w;int n=LocateVex
32、(g,v);int m=LocateVex(g,w);if(m<0|n<0|m=n)cout<<" 學(xué)校名輸入錯(cuò)誤!n"system("pause");Editgraph(g);else if(g->arcsnm.adj=INFINITY)cout<<" 不存在該線路 !n"system("pause");Editgraph(g);g->arcsnm.adj=INFINITY;(*g).arcsmn.adj=(*g).arcsnm.adj;.(*g).arcnum-;
33、return 1;void ChangeWeight(graph *g,string v,string w)cout<<" 請(qǐng)輸入要修改的線路的兩端的高校名:"cin>>v>>w;int m=LocateVex(g,v);int n=LocateVex(g,w);if(m<0|n<0)cout<<" 輸入的學(xué)校不存在!n"system("pause");Editgraph(g);else if(g->arcsnm.adj=INFINITY)cout<<&qu
34、ot; 不存在該線路 !n"system("pause");Editgraph(g);char s;cout<<" 請(qǐng)輸入該路線修改后的成本:"cin>>s;fflush(stdin);bool bRet = cin.good();if(!bRet)cout<<" 輸入的成本不是整型的!n"system("pause");.exit(0);elseg->arcsmn.adj=g->arcsnm.adj=s;int Destroygraph(graph *g)
35、 / 銷(xiāo)毀圖 gif(g->vexnum=0)cout<<" 未建立通信網(wǎng)絡(luò)系統(tǒng)!n"system("pause");Editgraph(g);int i;for(i=0;i<(*g).vexnum;i+)/刪除所有的點(diǎn)和邊DeleteVex(g,g->vexsi);(*g).vexnum=0;(*g).arcnum=0;return 1;int Display(graph *g)/以矩陣方式輸出圖if(g->vexnum=0)cout<<" 未建立通信網(wǎng)絡(luò)系統(tǒng)!n"system(&qu
36、ot;pause");menu(g);.int i,j;cout<<g->vexnum<<"個(gè)高校 "<<g->arcnum<<"條線路的通信系統(tǒng)如下面的矩陣:nn"cout<<""for(i=0;i<g->vexnum;i+)cout<<setw(2)<<" "<<g->vexsi<<" "cout<<endl;for(i=0;i<
37、;g->vexnum;i+)cout<<g->vexsi<<" "for(j=0;j<g->vexnum;j+)if(g->arcsij.adj=INFINITY)cout<<setw(5)<<""<<""elsecout<<setw(5)<<g->arcsij.adj<<""cout<<endl;return 1;/ 普里姆算法typedef structstring a
38、djvex;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;/min標(biāo)記第一個(gè)不為0 的值k=i;for(j=i+1;j<G->vexnum;j+)/繼續(xù)查找if(closedgej.lowcost&
39、gt;0&&closedgej.lowcost<min)min=closedgej.lowcost;k=j;return k;/ 返回當(dāng)前最小正值的序號(hào)void MiniSpanTree_Prim(graph *g,string s)static int sum=0;if(g->vexnum=0)cout<<" 未建立通信網(wǎng)絡(luò)系統(tǒng)!n"system("pause");menu(g);cout<<" 請(qǐng)輸入起始學(xué)校:"cin>>s;int n=LocateVex(g,s);
40、if(n<0)cout<<" 不存在該學(xué)校 !n"system("pause");menu(g);minside closedgeMAX_VERTEX_NUM;.int k=LocateVex(g,s);string a30,b30;/a,b為中間變量,用來(lái)存放邊的頂點(diǎn)closedgek.lowcost=0;/初始化, U=sfor(int i=0;i<g->vexnum;i+)/初始化 closedgekif(i!=k)closedgei.adjvex=s;closedgei.lowcost=g->arcski.ad
41、j;char name20;cout<<" 輸入要保存的文件名:"cin>>name;strcat(name,".txt");ofstream outfile(name);outfile<<"最佳方案 :n"cout<<" 最佳方案 :n"for(int e=1;e<=g->vexnum-1;e+)/找到 n-1 條邊int k0=minimum(g,closedge);string u0=closedgek0.adjvex;string v0=g->
42、;vexsk0;ae=u0;be=v0;int m=LocateVex(g,u0);int n=LocateVex(g,v0);cout<<"("<<u0<<"->"<<v0<<")t成本為 :"<<g->arcsmn.adj<<endl;outfile<<"("<<u0<<"->"<<v0<<")t成本為 :"&l
43、t;<g->arcsmn.adj<<endl;sum+=g->arcsmn.adj;.closedgek0.lowcost=0;for(i=0;i<g->vexnum;i+)if(g->arcsk0i.adj<closedgei.lowcost)closedgei.lowcost=g->arcsk0i.adj;closedgei.adjvex=v0;cout<<" 總成本 :"<<sum<<endl;outfile<<"總成本 :"<<
44、sum<<endl;outfile.close();void save(graph *g)if(g->vexnum=0)cout<<" 未建立通信網(wǎng)絡(luò)系統(tǒng)!n"system("pause");menu(g);char name20;cout<<" 輸入要保存的文件名:"cin>>name;strcat(name,".txt");ofstream outfile(name);outfile<<g->vexnum<<endl;outfi
45、le<<g->arcnum<<endl;for(int n=0;n<g->vexnum;n+).outfile<<g->vexsn<<endl;for(int i=0;i<g->vexnum;i+)for(int j=0;j<i;j+)int a=LocateVex(g,g->vexsi);int b=LocateVex(g,g->vexsj);int w=g->arcsab.adj;if(w!=INFINITY)outfile<<g->vexsi<<&qu
46、ot; "<<g->vexsj<<" "<<w<<endl;cout<<" 保存成功 !n"outfile.close();void Editgraph(graph *g)system("cls");cout<<"tt*n"cout<<"tt1.銷(xiāo)毀通信網(wǎng)絡(luò)系統(tǒng)n"cout<<"tt2.添加一個(gè)高校n"cout<<"tt3.刪除一個(gè)高校n"cout<<"tt4.修改高校名n"cout<<"tt5.添加一條高校間的線路n"cout<<"tt6.刪除一條高校間的線路n"cout<<"tt7.修改線路的成本n"cout<<"tt8.退出n"cout<<"tt*n".cout<<" 請(qǐng)選擇 :"string v,w
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 放下手機(jī)倡議書(shū)800字(13篇)
- 招生方案模板八篇
- 宿舍違規(guī)用電檢討書(shū)
- 心酸唯美感言60句
- 2025年山東淄博沂源縣事業(yè)單位招聘語(yǔ)文數(shù)學(xué)教師26人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東濟(jì)寧市兗州區(qū)商務(wù)局招聘海關(guān)協(xié)勤人員16人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東濟(jì)南通信網(wǎng)絡(luò)保障中心招聘10人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東濟(jì)南市天橋區(qū)教育和體育局所屬事業(yè)單位招聘237人管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東棗莊職業(yè)(技師)學(xué)院招聘?jìng)浒钢乒ぷ魅藛T4人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東曲阜師范大學(xué)招聘工作人員49人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 檢驗(yàn)檢測(cè)服務(wù)公司市場(chǎng)研究與市場(chǎng)營(yíng)銷(xiāo)方案
- 產(chǎn)品外觀檢驗(yàn)標(biāo)準(zhǔn)(通用)
- 股東協(xié)議明確約定投資人不參與經(jīng)營(yíng)管理
- 丹麥門(mén)薩權(quán)威IQ測(cè)試(附參考答案)
- 電氣試驗(yàn)110kV交接試驗(yàn)細(xì)則
- 外立面裝修改造工程施工方案(79頁(yè))
- 汽車(chē)吊接地比壓計(jì)算
- 跨國(guó)公司財(cái)務(wù)管理課后習(xí)題答案
- 人教版(2019)高一物理必修第三冊(cè) 13.5能量量子化 課件(共18張PPT)
- 溝槽管件尺寸對(duì)照表
- 美術(shù)教案雄偉的塔教學(xué)反思
評(píng)論
0/150
提交評(píng)論