




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#define INFINITY 10000 /*無(wú)窮大*/ #define MAX_VERTEX_NUM 40 #define MAX 40 #include #include #include #include typedef struct ArCell int adj; /路徑長(zhǎng)度 ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; typedef struct /圖中頂點(diǎn)表示主要景點(diǎn),存放景點(diǎn)的編號(hào)、名稱(chēng)、簡(jiǎn)介等信息, char name30; int num; char introduction100;/簡(jiǎn)介 infotype; typedef
2、 struct infotype vexsMAX_VERTEX_NUM; AdjMatrix arcs; int vexnum,arcnum; MGraph; MGraph b; void cmd(void); MGraph InitGraph(void); void Menu(void); void Browser(MGraph *G); void ShortestPath_DIJ(MGraph * G); void Floyd(MGraph *G); void Search(MGraph *G); int LocateVex(MGraph *G,char* v); MGraph * Cre
3、atUDN(MGraph *G); void print(MGraph *G); int main(void) system(color 1f); system(mode con: cols=140 lines=130); cmd(); getchar();return 0; void cmd(void) int i; b=InitGraph(); Menu(); scanf(%d,&i); while(i!=5) switch(i) case 1:system(cls);Browser(&b);Menu();break; case 2:system(cls);ShortestPath_DIJ
4、(&b);Menu();break; case 3:system(cls);Floyd(&b);Menu();break; case 4:system(cls);Search(&b);Menu();break; case 5:exit(1);break; default:break; scanf(%d,&i); MGraph InitGraph(void) MGraph G; int i,j; G.vexnum=10; G.arcnum=14; for(i=0;i G.vexnum;i+) G.vexsi.num=i; strcpy(G.,綜合食堂); strcpy(G.v
5、roduction,新建標(biāo)準(zhǔn)化食堂); strcpy(G.,東西辦公樓); strcpy(G.roduction,全體教師辦公場(chǎng)所,樓高12層,各種設(shè)施齊全); strcpy(G.,5號(hào)學(xué)生宿舍樓); strcpy(G.roduction,計(jì)算機(jī)系男生宿舍樓,蘇式建筑); strcpy(G.,醫(yī)院); strcpy(G.roduction,校醫(yī)院,設(shè)施不是很齊全,只能看小病,收費(fèi)較貴); strcpy(G.,圖書(shū)館); strcpy(G.vexs
6、4.introduction,藏書(shū)60萬(wàn)冊(cè),設(shè)施良好,2樓為電子閱覽室,環(huán)境幽雅); strcpy(G.,足球場(chǎng)); strcpy(G.roduction,現(xiàn)代化塑膠跑道,人造草坪,適宜鍛煉身體的場(chǎng)所); strcpy(G.,沁園); strcpy(G.roduction,綠樹(shù)成蔭,適宜休息和讀書(shū)); strcpy(G.,主教學(xué)樓); strcpy(G.roduction,學(xué)院最大的教學(xué)樓,共5層,環(huán)形建筑,適宜學(xué)習(xí)); strcpy(G.,西教學(xué)樓); str
7、cpy(G.roduction,學(xué)院第二大教學(xué)樓,環(huán)境較差); strcpy(G.,多媒體樓); strcpy(G.roduction,多媒體教學(xué)場(chǎng)所,設(shè)施先進(jìn),環(huán)境良好); for(i=0;i G.vexnum;i+) for(j=0;j G.vexnum;j+) G.arcsij.adj=INFINITY; G.arcs01.adj=100; G.arcs02.adj=200; G.arcs06.adj=400; G.arcs17.adj=300; G.arcs23.adj=120; G.arcs36.adj=220; G.arcs3
8、4.adj=100; G.arcs45.adj=300; G.arcs49.adj=250; G.arcs59.adj=350; G.arcs67.adj=60; G.arcs69.adj=200; G.arcs78.adj=50; G.arcs89.adj=20; for(i=0;i G.vexnum;i+) for(j=0;j G.vexnum;j+) G.arcsji.adj=G.arcsij.adj; return G; /InitGraph end void Menu() printf(n 校園導(dǎo)游圖n); printf( 1.瀏覽校園全景 n); printf( 2.查看所有游覽路
9、線(xiàn) n); printf( 3.選擇出發(fā)點(diǎn)和目的地 n); printf( 4.查看景點(diǎn)信息 n); printf( 5.退出系統(tǒng) n); printf(輸入選擇操作的序號(hào):); void Browser(MGraph *G) int v; printf( 編號(hào) 景點(diǎn)名稱(chēng) 簡(jiǎn)介 n); for(v=0;v vexnum;v+) printf(%-4d %-16s %-56s n,G-vexsv.num,G-,G-roduction); / 迪杰斯特拉算法來(lái)計(jì)算出起點(diǎn)到各個(gè)頂點(diǎn)之間的最短路徑,v0為起點(diǎn) void ShortestPath_DIJ(MGrap
10、h * G) int v,w,i,min,t=0,x,flag=1,v0; int final20, D20, p2020; while(flag) printf(請(qǐng)輸入一個(gè)起始景點(diǎn)編號(hào):); scanf(%d,&v0); if(v0 G-vexnum) printf(景點(diǎn)編號(hào)不存在!請(qǐng)重新輸入景點(diǎn)編號(hào):); scanf(%d,&v0); if(v0=0&v0 vexnum) flag=0; for(v=0;v vexnum;v+) finalv=0; Dv=G-arcsv0v.adj; for(w=0;w vexnum;w+) pvw=0; if(Dv INFINITY) pvv0=1;pv
11、v=1; Dv0=0;finalv0=1; for(i=1;i vexnum;i+) min=INFINITY; for(w=0;w vexnum;w+) if(!finalw) if(Dw min)v=w;min=Dw; finalv=1; for(w=0;w vexnum;w+) if(!finalw&(min+G-arcsvw.adj arcsvw.adj; for(x=0;x vexnum;x+) pwx=pvx; pww=1; for(v=0;v vexnum;v+) if(v0!=v) printf(%s,G-); for(w=0;w vexnum;w+) i
12、f(pvw&w!=v0) printf(-%s,G-); t+; if(tG-vexnum-1&v0!=v)printf( 總路線(xiàn)長(zhǎng)%dmnn,Dv); /ShortestPath_DIJ end void Floyd(MGraph *G) int v,u,i,w,k,j,flag=1,p101010,D1010; for(v=0;v vexnum;v+) for(w=0;w vexnum;w+) Dvw=G-arcsvw.adj; for(u=0;u vexnum;u+) pvwu=0; if(Dvw INFINITY) pvwv=1;pvww=1; for(u=0;u
13、vexnum;u+) for(v=0;v vexnum;v+) for(w=0;w vexnum;w+) if(Dvu+Duw Dvw) Dvw=Dvu+Duw; for(i=0;i vexnum;i+) pvwi=pvui|puwi; while(flag) printf(請(qǐng)輸入出發(fā)點(diǎn)和目的地的編號(hào):); scanf(%d%d,&k,&j); if(k G-vexnum|j G-vexnum) printf(景點(diǎn)編號(hào)不存在!請(qǐng)重新輸入出發(fā)點(diǎn)和目的地的編號(hào):); scanf(%d%d,&k,&j); if(k=0&k vexnum&j=0&j vexnum) flag=0; printf(%s
14、,G-); for(u=0;u vexnum;u+) if(pkju&k!=u&j!=u) printf(-%s,G-); printf(-%s,G-); printf( 總路線(xiàn)長(zhǎng)%dmn,Dkj); /Floyd end void Search(MGraph *G) int k,flag=1; while(flag) printf(請(qǐng)輸入要查詢(xún)的景點(diǎn)編號(hào):); scanf(%d,&k); if(k G-vexnum) printf(景點(diǎn)編號(hào)不存在!請(qǐng)重新輸入景點(diǎn)編號(hào):); scanf(%d,&k); if(k=0&k vexnum)
15、 flag=0; printf( 編號(hào) 景點(diǎn)名稱(chēng) 簡(jiǎn)介 n); printf( %-4d %-16s %-56s n,G-vexsk.num,G-,G-roduction); /Search end int LocateVex(MGraph *G,char* v) int c=-1,i; for(i=0;i vexnum;i+) if(strcmp(v,G-)=0) c=i;break; return c; MGraph * CreatUDN(MGraph *G)/初始化圖形,接受用戶(hù)輸入 int i,j,k,w; char v120,
16、v220; printf(請(qǐng)輸入圖的頂點(diǎn)數(shù),弧數(shù):); scanf(%d%d,&G-vexnum,&G-arcnum); printf(請(qǐng)輸入景點(diǎn)的編號(hào):、名稱(chēng)、簡(jiǎn)介:n); for(i=0;i vexnum;i+) printf(景點(diǎn)編號(hào):); scanf(%d,&G-vexs-num); printf(景點(diǎn)名稱(chēng):); scanf(%s,G-); printf(景點(diǎn)簡(jiǎn)介:); scanf(%s,G-vexs-introduction); for(i=0;i vexnum;i+) for(j=0;j vexnum;j+) G-arcsij.adj=INFINITY; printf(請(qǐng)輸入路徑長(zhǎng)度:n); for(k=0;k arcnum;k+) printf(第%d條邊:n,k+1); printf(景點(diǎn)對(duì)(x,y):); scanf(%s,v1); scanf(%s,v2); printf(路徑長(zhǎng)度:); scanf(%d,&w); i=LocateVex(G
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)科醫(yī)師面試題及答案
- 如何護(hù)理營(yíng)養(yǎng)性缺鐵性貧血
- 勞動(dòng)仲裁內(nèi)部培訓(xùn)
- 影樓修片培訓(xùn)
- 地產(chǎn)基礎(chǔ)知識(shí)培訓(xùn)
- 消化內(nèi)科胃炎護(hù)理
- 小學(xué)素描繪畫(huà)課件
- 護(hù)理總結(jié)匯報(bào)
- 婦產(chǎn)科妊娠期婦女的護(hù)理
- 中專(zhuān)急救護(hù)理學(xué)
- 兒童七步洗手法
- 國(guó)家開(kāi)放大學(xué)程序設(shè)計(jì)基礎(chǔ)形考任務(wù)4
- 勞務(wù)解除合同書(shū)模板
- 2024旅游景區(qū)安全評(píng)估細(xì)則
- 2024年云南省三校生高考計(jì)算機(jī)信息類(lèi)考試復(fù)習(xí)題庫(kù)(必刷600題)
- 四川省成都市郫都區(qū)2024屆七年級(jí)數(shù)學(xué)第二學(xué)期期末綜合測(cè)試試題含解析
- 行政培訓(xùn)學(xué)習(xí)課件
- 《電子門(mén)禁設(shè)計(jì)》課件
- 一平臺(tái)機(jī)考《數(shù)據(jù)結(jié)構(gòu)》復(fù)習(xí)資料3
- AI驅(qū)動(dòng)測(cè)試優(yōu)化
- 2023年10月自考00401學(xué)前比較教育試題及答案含評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論