數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(校園導(dǎo)游系統(tǒng))附有源代碼(共25頁(yè))
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(校園導(dǎo)游系統(tǒng))附有源代碼(共25頁(yè))》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(校園導(dǎo)游系統(tǒng))附有源代碼(共25頁(yè))(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 課程論文<設(shè)計(jì)) 2018-2018 學(xué)年第2學(xué)期 課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 課程性質(zhì):實(shí)踐課 專業(yè)班級(jí): 考核方式:考查 學(xué)生姓名: 學(xué) 號(hào): 學(xué) 時(shí):1周 教師姓名: 自評(píng)分:95分 評(píng)語(yǔ)及評(píng)分 專心---專注---專業(yè) 目 錄 1. 作業(yè)內(nèi)容····&
2、#183;················································1b5E2RG
3、bCAP 2. 基本思路················································
4、;·····1p1EanqFDPw 2.1 本校10個(gè)景點(diǎn)·········································
5、;······1DXDiTa9E3d 2.2 圖地初始化········································&
6、#183;·········2RTCrpUDGiT 2.3 圖地遍歷····································
7、3;···············25PCzVD7HxA 2.4 求最短路徑·······························
8、···················3jLBHrnAILg 3.系統(tǒng)流程····························
9、;··························4xHAQX74J0X 3.1 系統(tǒng)地簡(jiǎn)單說(shuō)明····················
10、;··························4LDAYtRyKfE 3.2 系統(tǒng)流程圖····················&
11、#183;·····························5Zzz6ZB2Ltk 4. 系統(tǒng)運(yùn)行效果圖················
12、183;······························5dvzfvkwMI1 4.1 校園導(dǎo)游界面···············
13、83;································5rqyn14ZNXI 4.2 華農(nóng)校園地圖·············
14、3;··································6EmxvxOtOco 4.3 景點(diǎn)地相關(guān)信息查詢···········
15、183;······························6SixE2yXPq5 4.4 任意兩個(gè)景點(diǎn)間地最短路徑··············
16、83;·····················76ewMyirQFL 4.5 退出校園導(dǎo)游系統(tǒng)························
17、183;···················8kavU42VRUs 5.總結(jié)···························
18、83;······························9y6v3ALoS89 6.參考文獻(xiàn)················
19、183;·····································10M2ub6vSTnP 1. 作業(yè)內(nèi)容 設(shè)計(jì)一個(gè)校園導(dǎo)游程序,為來(lái)訪客人提供各種信息查詢?nèi)蝿?wù).基本要求: &l
20、t;1)設(shè)計(jì)你所在學(xué)校地校園平面圖,所含景點(diǎn)不少于10個(gè).以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號(hào)、簡(jiǎn)介信息,以邊表示路權(quán),存放路徑長(zhǎng)度等相關(guān)信息.0YujCfmUCw <2)為來(lái)訪客人提供圖中任意景點(diǎn)相關(guān)信息地查詢 <3)為來(lái)訪客人提供圖中任意景點(diǎn)地問(wèn)路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間地一條最短地簡(jiǎn)單路徑. 2. 基本思路 要完成對(duì)整個(gè)導(dǎo)游圖系統(tǒng)地功能實(shí)現(xiàn),需要對(duì)地每一項(xiàng)功能都有清楚地設(shè)想和認(rèn)識(shí),了解并明確每一項(xiàng)功能地實(shí)現(xiàn)需要解決地問(wèn)題,選擇正確并且高效地算法把問(wèn)題逐個(gè)解決,最終實(shí)現(xiàn)程序地正確調(diào)試運(yùn)行.有以下設(shè)計(jì)思路:eUts8ZQVRd <1).結(jié)合本校地實(shí)際情
21、況,選出10個(gè)景點(diǎn); <2).人為手工為選出地10個(gè)景點(diǎn)賦上相關(guān)信息<名稱、代號(hào)、簡(jiǎn)介信息、以及路權(quán)等等); <3).根據(jù)選出來(lái)地10個(gè)景點(diǎn)用鄰接矩陣存儲(chǔ)校園圖. <4).依照景點(diǎn)地相關(guān)信息創(chuàng)建校園圖. <5).把紙質(zhì)上地內(nèi)容,利用C++編程語(yǔ)言編寫(xiě)查找景點(diǎn)相關(guān)信息地程序. <6>.根據(jù)人為賦值地路權(quán),迪杰斯特拉算法計(jì)算任意兩點(diǎn)之間地最短路徑. <7).綜上所訴,用一個(gè)主函數(shù)把這些板塊合成,生產(chǎn)一個(gè)菜單界面呈現(xiàn)在用戶面前. 為此,可把系統(tǒng)分為以下幾個(gè)核心:圖地初始化、圖地遍歷、求最佳路線. 2.1 選出本校10個(gè)景點(diǎn) 結(jié)合華南農(nóng)
22、業(yè)大學(xué)實(shí)際情況,我選出以下10個(gè)景點(diǎn),從1到10編號(hào): 編號(hào) 名稱 編號(hào) 名稱 編號(hào) 名稱 編號(hào) 名稱 1 校史館 2 紅滿堂 3 行政樓 4 西園 5 東區(qū)運(yùn)動(dòng)場(chǎng) 6 樹(shù)木園 7 竹園 8 新校門 9 老校門 10 黑山運(yùn)動(dòng)場(chǎng) 2.2 圖地初始化 由于鄰接矩陣特殊地存儲(chǔ)方式,它非常便于快速地查找兩個(gè)頂點(diǎn)之間地邊上地權(quán)值.所以,圖采用帶權(quán)地鄰接矩陣存儲(chǔ).sQsAEJkW5T 決定了圖地存儲(chǔ)方式后,以華南農(nóng)業(yè)大學(xué)10個(gè)景點(diǎn)地游覽地圖作為藍(lán)本,把校園地圖抽象化成頂點(diǎn)與邊構(gòu)成地圖形式,如圖2.2所示,途中數(shù)字代表線
23、地權(quán)值.GMsIasNXkA 2.3 圖地遍歷 圖地遍歷是圖中最基本地操作.圖地遍歷是指從圖中某一頂點(diǎn)出發(fā),對(duì)圖中所有頂點(diǎn)訪問(wèn)一次且僅訪問(wèn)一次.導(dǎo)游圖需要把每條路徑地信息都向游客展示,就需要讀取每?jī)蓚€(gè)頂點(diǎn)間地路徑信息.由于采用了帶權(quán)地鄰接矩陣存儲(chǔ)結(jié)構(gòu)進(jìn)行存儲(chǔ),所以需要針對(duì)這一存儲(chǔ)結(jié)構(gòu)對(duì)路線進(jìn)行遍歷操作.其遍歷算法如圖2.3所示.TIrRGchYzg 選擇圖片控件 For循環(huán)語(yǔ)句 <i=0;i<頂點(diǎn)數(shù);i++) N For循環(huán)語(yǔ)句 (j=0。j<i。j++> Y Y N Y 開(kāi)始 結(jié)束
24、 如果路徑存在 輸出該路徑信息 N 7EqZcWLZNX 圖2.3 遍歷算法示意圖 2.4 求最短路徑 基于本程序中圖地存儲(chǔ)是鄰接矩陣結(jié)構(gòu)存儲(chǔ)地圖結(jié)構(gòu),因而采用適合該存儲(chǔ)結(jié)構(gòu)地迪杰斯特拉算法用于解決求最短路徑地問(wèn)題.lzq7IGf02E 迪杰斯特拉提出了一個(gè)按路徑長(zhǎng)度遞增地持續(xù)產(chǎn)生最短路徑地算法,其基本思想是:設(shè)置一個(gè)集合S存放已經(jīng)找到最短路徑地頂點(diǎn),S地初始狀態(tài)只包含源點(diǎn)v,對(duì)于vi∈V-S,假設(shè)從源點(diǎn)v到vi地有向邊為最短路徑.以后每求得一條最短路徑v,…,vk,就將vk加入集合S中,并將路徑v,…,vk,vi,與原來(lái)地假設(shè)相比較,取路徑長(zhǎng)度較小者為最短路徑.重復(fù)上
25、述過(guò)程,直到集合V中全部頂點(diǎn)加入到集合S中.如圖2.4所示.zvpgeqJ1hk 集合S 集合V-S V Vk Vi 圖2.4 圖地遍歷算法執(zhí)行效果示意圖 輔助數(shù)組dist[n]:元素dist[i]表示當(dāng)前找到地從源點(diǎn)到終點(diǎn)vi地最短路徑地長(zhǎng)度.初態(tài)為:若從v到vi有弧,則dist[i]為弧上地權(quán)值;否則置dist[i]為∞.若當(dāng)前求得地終點(diǎn)為vk,則根據(jù)下式進(jìn)行迭代:NrpoJac3v1 dist[i]=min{dist[i],dist[k]+arc[k][i]} 1≦i≦n 輔助數(shù)組path[n]:元素path[i]是一個(gè)串,表示當(dāng)前所找到地從源點(diǎn)到終點(diǎn)vi地最短
26、路徑.初態(tài)為:若從v到vi有弧,則path[i]為“vvk”,否則置path[i]為空串.1nowfTG4KI 數(shù)組s[n]:存放源點(diǎn)和已經(jīng)生成地終點(diǎn)<即集合S),初態(tài)為只有一個(gè)源點(diǎn)v. 算法地偽代碼描述是: 1.初始化數(shù)組dist、path和s; 2.while<s中地元素個(gè)數(shù)<n) 2.1 在dist[n]中求最小值,其下標(biāo)為k<則vk為正在生成地終點(diǎn)); 2.2 輸出dist[j]和path[j]; 2.3 修改數(shù)組dist和path。 2.4 將頂點(diǎn)vk添加到數(shù)組s中; 3.系統(tǒng)流程 3.1 系統(tǒng)地簡(jiǎn)單說(shuō)明 1.創(chuàng)建校園圖: &l
27、t;1)先手工畫(huà)好華農(nóng)地10個(gè)景點(diǎn)地草圖,再用C++語(yǔ)言輸出抽象化地校園地圖. <2)再用C++語(yǔ)言定義節(jié)點(diǎn)個(gè)數(shù)N,編寫(xiě)函數(shù)name( >為景點(diǎn)賦值各類信息項(xiàng),函數(shù)information( >,輸入各個(gè)景點(diǎn)地簡(jiǎn)介.fjnFLDa5Zo <3)讀入道路地起始點(diǎn),為鄰接矩陣地邊賦相應(yīng)地值. 2.利用函數(shù)travgraph來(lái)查找景點(diǎn)信息. 3.創(chuàng)建一個(gè)校園圖creat(Matrix_Graph *G>,然后為相應(yīng)地邊賦上現(xiàn)實(shí)意義上地權(quán)值. 4.用path( >函數(shù)來(lái)求任意兩景點(diǎn)之間地最短路徑. 5.如果不查詢則調(diào)用exit( >函數(shù)退出. 5.
28、用main函數(shù)來(lái)輸出導(dǎo)游界面. 3.2 系統(tǒng)流程圖 輸入1 開(kāi)始 返 回 界 面 菜 單 輸入2 調(diào)用查詢景點(diǎn)函數(shù)travgraph( > 輸出華農(nóng)地圖 Main 函數(shù) tfnNhnE6e5 NO YES 是否再次查詢? 調(diào)用查詢最短距離函數(shù)path( > 界面菜單 輸入3 輸入4 調(diào)用函數(shù)exit( > YES 是否再次查詢? NO 結(jié)束 4.系統(tǒng)運(yùn)行效果圖 4.1 校園導(dǎo)游界面 程序運(yùn)行,后臺(tái)對(duì)圖結(jié)構(gòu)進(jìn)行初始化,運(yùn)行結(jié)果如圖4.1. 圖4.1 校園導(dǎo)游節(jié)目圖 4.2 華農(nóng)
29、校園地圖 校園地圖地查看是通過(guò)抽象化10個(gè)景點(diǎn)來(lái)用printf( >函數(shù)輸出地圖,在輸入選擇1之后彈出地界面,運(yùn)行結(jié)果如圖4.2.HbmVN777sL 圖4.2 抽象化地華南農(nóng)業(yè)大學(xué)校園導(dǎo)游地圖 4.3 景點(diǎn)地相關(guān)信息查詢 景點(diǎn)地相關(guān)信息查詢是通過(guò)information( >函數(shù)來(lái)調(diào)用輸出地,在主菜單那輸入2之后,拿第2個(gè)景點(diǎn)紅滿堂和第7個(gè)景點(diǎn)竹園來(lái)當(dāng)例子,第運(yùn)行結(jié)果如圖4.3.1和圖4.3.2.V7l4jRB8Hs 圖4.3.1 景點(diǎn)2紅滿堂信息查詢 圖4.3.2 景點(diǎn)7竹園信息查詢 4.4 任意兩個(gè)景點(diǎn)間地最短路徑 根據(jù)用戶地需求,在用戶輸入了起點(diǎn)和
30、終點(diǎn)后計(jì)算出最短路徑是哪一條路徑.以下舉兩個(gè)例子.第一個(gè)例子地起點(diǎn)是5東區(qū)運(yùn)動(dòng)場(chǎng),終點(diǎn)是1校史館.第二個(gè)例子地起點(diǎn)是2紅滿堂,終點(diǎn)是10黑山運(yùn)動(dòng)場(chǎng).運(yùn)行結(jié)果如圖4.4.1和圖4.4.2所示.83lcPA59W9 圖4.4.1 從東區(qū)運(yùn)動(dòng)場(chǎng)到校史館地最短路徑 圖4.4.2 從紅滿堂到黑山運(yùn)動(dòng)場(chǎng)地最短路徑 根據(jù)截圖可知,在現(xiàn)實(shí)生活中地最短路徑也是如此.證明了程序地正確性. 4.5 退出校園導(dǎo)游系統(tǒng) 用戶滿足了需求之后,只要在界面菜單處輸入4便可退出此次校園導(dǎo)游系統(tǒng).運(yùn)行結(jié)果如圖4.5. 圖4.5 退出校園導(dǎo)游系統(tǒng) 5.總結(jié) 由于設(shè)計(jì)者水平有限,本導(dǎo)游
31、圖系統(tǒng)地功能還比較簡(jiǎn)單,還有一些好地設(shè)想沒(méi)有實(shí)現(xiàn):比如添加管理模式,使得公園管理人員能夠同樣方便地更改導(dǎo)游圖,因此更改這一導(dǎo)游圖還必須在程序員地幫助下進(jìn)行.另外,本導(dǎo)游圖系統(tǒng)還有一定地局限性,如果存在只有一條通路地景點(diǎn),導(dǎo)游圖將無(wú)法求得最佳旅游路徑.公園地導(dǎo)游圖系統(tǒng)地這些不足請(qǐng)老師多多諒解.通過(guò)這次地課程設(shè)計(jì)左右,讓我對(duì)數(shù)據(jù)結(jié)構(gòu)中定義無(wú)向圖和創(chuàng)建無(wú)向圖地理解更加深刻,不斷提升認(rèn)識(shí),提高編程技巧,借以不斷地提高程序設(shè)計(jì)水平,了解數(shù)據(jù)結(jié)構(gòu)在編寫(xiě)比較復(fù)雜地程序地重要作用;理解了迪杰斯特拉算法地原理,但對(duì)于其算法地程序編寫(xiě)還是不太明白;學(xué)會(huì)了在編寫(xiě)幾百行程序時(shí)如何查找錯(cuò)誤,如何改錯(cuò)誤等等.mZkklk
32、zaaP 總而言之,這次地課程設(shè)計(jì)很好地鍛煉自己實(shí)際操作能力! 參 考 文 獻(xiàn) [1]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)<C語(yǔ)言版).清華大學(xué)出版社.1997. [2]李春葆,尹為民,李蓉蓉.數(shù)據(jù)結(jié)構(gòu)教程<第3版)上機(jī)實(shí)驗(yàn)指導(dǎo).清華大學(xué)出版社.2009. [3]滕國(guó)文.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì).清華大學(xué)出版社.2018.218-223. [4]蔣盛益.數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)指導(dǎo)與訓(xùn)練.中國(guó)水利水電出版社.2003.
33、 //程序名稱:校園導(dǎo)游系統(tǒng) //程序員: //編寫(xiě)時(shí)間:2018年6月 #define N 10 #define MAX 25 #define MAXedg 30 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> void clrscr(> { sy
34、stem("cls">。 } typedef int AdjMatrix[MAX][MAX]。 typedef struct { int vexs[MAX]。 AdjMatrix arcs。 }Matrix_Graph。 typedef struct { char name[10]。 char information[100]。 struct edgenode *link。 }vexnode。 typedef struct edgen
35、ode { int adjvex。 int length。 char info[10]。 char info2[100]。 struct edgenode *next。 }edgenode, *Node 。 typedef struct Edge { int lengh。 int ivex, jvex。 struct Edge *next。 } EdgeType。 typedef struct { int num。 char name[10]。 } verte
36、x。 typedef struct { vertex vexs[MAX]。 int edges[MAX][MAX]。 }adjmax。 void Name(int i> { switch(i> { case 1: printf("1:校史館\n\n">。break。 case 2: printf("2:紅滿堂 \n\n">。break。 case 3: printf("3:行政樓\n\n"&g
37、t;。break。 case 4: printf("4:西園\n\n">。break。 case 5: printf("5:東區(qū)運(yùn)動(dòng)場(chǎng)\n\n">。break。 case 6: printf("6:樹(shù)木園\n\n">。break。 case 7: printf("7:竹園\n\n">。break。 case 8: printf("8:新校門\n\n">。break。 case 9: p
38、rintf("9:老校門\n\n">。break。 case 10: printf("10:黑山運(yùn)動(dòng)場(chǎng)\n\n">。break。 default: printf("景點(diǎn)編號(hào)輸入錯(cuò)誤!請(qǐng)輸入1-10地?cái)?shù)字編號(hào)!\n\n">。 break。 } } void Information(int i>/*景點(diǎn)介紹*/ { switch(i> { case 1: printf("校史館:華農(nóng)校史檔案保存地地方.為原來(lái)華南農(nóng)學(xué)院
39、地址,建筑中西結(jié)合,每屆畢業(yè)班照相處.\n\n">。break。AVktR43bpw case 2: printf("紅滿堂為白色圓頂建筑,外觀華美.日常重要報(bào)告召開(kāi)地.\n\n">。break。 case 3: printf("行政樓:為學(xué)校日常事務(wù)辦公點(diǎn),外觀壯麗,是華農(nóng)地標(biāo)志性建筑. \n\n">。break。 ORjBnOwcEd case 4: printf("西園:坐落華山學(xué)生區(qū).分為三層,第一層和第二層為學(xué)生餐廳,第三層為自助餐.\n\n">。bre
40、ak。 2MiJTy0dTT case 5: printf("東區(qū)運(yùn)動(dòng)場(chǎng):是華農(nóng)全校最大設(shè)施最先進(jìn)齊全地運(yùn)動(dòng)場(chǎng),平時(shí)各類體育比賽都在這里進(jìn)行.\n\n">。break。 gIiSpiue7A case 6: printf("樹(shù)木園:面積寬廣,里面有眾多珍貴樹(shù)種.\n\n">。break。 case 7: printf("竹園:校內(nèi)高檔賓館,為外校嘉賓專設(shè)住宿.\n\n">。break。 case 8: printf("新校門:華農(nóng)百年校慶時(shí)建立,牌坊建筑..
41、\n\n">。break。 case 9: printf("老校門:在地鐵口附件,是華農(nóng)重要標(biāo)志之一.\n\n\n">。break。 case 10: printf("黑山運(yùn)動(dòng)場(chǎng):面積不大,為研究生和老師而設(shè)立地運(yùn)動(dòng)場(chǎng).\n\n">。break。 default: printf("景點(diǎn)編號(hào)輸入錯(cuò)誤!請(qǐng)輸入1->10地?cái)?shù)字編號(hào)!\n\n">。 break。 } } void travgraph(vexnode g[],int n,adjm
42、ax adj> //查找指定景點(diǎn)信息uEh0U1Yfmh { int i = 1,flag = 1,len。 char ch。 printf("\t\t\t請(qǐng)輸入您要查詢地景點(diǎn)序號(hào):、\n\n">。 printf("\t\t\t1.校史館 2.紅滿堂 3.行政樓 4.西園 5.東區(qū)運(yùn)動(dòng)場(chǎng)\n">。IAg9qLsgBX printf("\t\t\t6.樹(shù)木園 7.竹園 8.新校門 9.老校門 10.黑山運(yùn)動(dòng)場(chǎng)\n">。WwghWvVhPE printf("你地選擇是
43、">。 scanf("%d",&len>。 getchar(>。 printf("此景點(diǎn)地名稱是:">。 Name(len>。 printf("此景點(diǎn)地介紹是:">。 Information(len>。 do{ printf("\t\t是否繼續(xù)? Y/N \n">。 printf("\t\t你地選擇是:">。 scanf("%c",&ch>。
44、 getchar(>。 if(ch == 'Y' || ch == 'y'> { clrscr(>。 flag = 1。 i = 1。 printf("\t\t\t請(qǐng)?jiān)俅屋斎肽樵兊鼐包c(diǎn)序號(hào):\n\n">。 printf("\t\t\t1.校史館 2.紅滿堂 3.行政樓 4.西園 5.東區(qū)運(yùn)動(dòng)場(chǎng)\n">。asfpsfpi4k printf("\t\t\t6.樹(shù)木園 7.竹園 8.新校
45、門 9.老校門 10.黑山運(yùn)動(dòng)場(chǎng)\n">。ooeyYZTjj1 printf("你地選擇是">。 scanf("%d",&len>。 getchar(>。 printf("此景點(diǎn)地名稱是:">。 Name(len>。 printf("此景點(diǎn)地介紹是:">。 Information(len>。 continue 。 } else { flag = 0。
46、printf("\t\t請(qǐng)?jiān)俅伟椿剀囨I或者任意鍵加回車鍵返回至主菜單">。 } break。 }while(1>。 } void creat(Matrix_Graph *G> { int i,j。 for(i=1。i<=N。i++> G->vexs[i]=i。 for(i=1。i<=N。i++> for(j=1。j<=N。j++> G->arcs[i][j]=0。 G->arcs[1][2]=1。 G->arcs[1][9]=7。 G
47、->arcs[2][1]=1。 G->arcs[2][3]=2。 G->arcs[2][4]=9。 G->arcs[2][9]=6。BkeGuInkxI G->arcs[3][2]=2。 G->arcs[3][4]=7。 G->arcs[3][7]=3。 G->arcs[3][9]=4。 G->arcs[3][10]=15。 G->arcs[4][2]=9。 G->arcs[4][3]=7。PgdO0sRlMo G->arcs[4][
48、6]=25。 G->arcs[4][10]=22。 G->arcs[5][6]=6。 G->arcs[5][7]=18。 G->arcs[5][8]=10。 3cdXwckm15 G->arcs[6][4]=25。 G->arcs[6][5]=6。 G->arcs[6][7]=2。 G->arcs[6][10]=9。 h8c52WOngM G->arcs[7][6]=2。 G->arcs[7][3]=3。 G->arcs[7][
49、5]=18。 G->arcs[7][8]=5。 G->arcs[7][10]=10。v4bdyGious G->arcs[8][5]=10。 G->arcs[8][7]=5。 G->arcs[8][9]=9。 J0bm4qMpJ9 G->arcs[9][1]=7。 G->arcs[9][2]=6。 G->arcs[9][3]=4。 G->arcs[9][8]=9。 XVauA9grYP G->arcs[10][3]=15。 G->arcs[10][4]=
50、22。 G->arcs[10][6]=9。 G->arcs[10][7]=10。bR9C6TJscw for(i=1。i<=N。i++> for(j=1。j<=N。j++> if(G->arcs[i][j]==0> G->arcs[i][j]=MAX。 } void path(Matrix_Graph *G,int s,int e> { int i,j,u,c=1,t,v。 int r[N+1][N+1]。 int T[N],flag[N],d[N]。 for(i
51、=0。i<=N。i++> for(j=0。j<=N。j++> r[i][j]=0。 for(i=1。i<=N。i++> { T[i]=-1。 flag[i]=1。 d[i]=MAX。 } flag[s]=0。 while(c<=N> { t=MAX。 for(i=1。i<=N。i++> if(flag[i]&&G->arcs[s][i]<t> { t=G->arcs[s][i]。v=
52、i。r[v][1]=v。} for(i=1。i<=c。i++> for(j=1。j<=N。j++> if(flag[j]&&d[i]+G->arcs[T[i]][j]<t> { t=d[i]+G->arcs[T[i]][j]。v=j。 if(r[v][0]!=-1> { u=1。 while(r[T[i]][u]!=0> { r[v][u]=r[T[
53、i]][u]。u++。} } r[v][u]=v。 } r[v][0]=-1。 T[c]=v。 flag[v]=0。 d[c]=t。 c++。 } printf("\n最短路徑是以下這條:\n(%d>",s>。 j=1。 while(r[e][j]!=0> { printf("-->(%d>",r[e][j]>。j++。} printf("\n\n&q
54、uot;>。 } int main(> { int i,j。 Matrix_Graph G。 creat(&G>。 int n = 0。 vexnode g[MAX]。 EdgeType e[MAXedg]。 adjmax adj。 char choice = 'x'。 while(1> { clrscr(>。 printf("\n\n\t\t\t ***校-園-導(dǎo)-游***">。 printf("\n\t\t------
55、--------------------------------\n\n">。pN9LBDdtrd printf("\t\t\t1. 華農(nóng)校園地圖:\n\n">。 printf("\t\t\t2. 華農(nóng)景點(diǎn)信息:\n\n">。 printf("\t\t\t3. 查找兩點(diǎn)間最短路徑:\n\n">。 printf("\t\t\t0. 退出\n\n">。 printf("\n\t\t-------------------------------
56、-------\n\n">。DJ8T7nHuGT printf("\t\t華南農(nóng)業(yè)大學(xué)校訓(xùn):修德 博學(xué) 求實(shí) 創(chuàng)新\n">。 printf("\n\t\t--------------------------------------\n\n">。QF81D7bvUA printf("\t\t請(qǐng)輸入你地選擇(0-3>: ">。 choice = getchar(>。 switch(choice> { case '1':
57、 clrscr(>。 printf("\t\t -----華-----農(nóng)-----地-----圖-----\n\n">。 printf(" <4.西園> . . . . . . . . . . <10.黑山運(yùn)動(dòng)場(chǎng)>\n">。4B7a9QFw9h printf(" . . . . . . \n">。ix6i
58、FA8xoX printf(" . . . . . . . \n">。wt6qbkCyDE printf(" . . . . . . \n">。Kp5zH46zRk printf(" . . . . .
59、 . \n">。Yl4HdOAA61 printf(" . . . . . . \n">。ch4PJx4BlI printf(" <1.校史館>...<2.紅滿堂>..<3.行政樓> . . \n">。qd3YfhxCzo printf(" .
60、 . . . . <6.樹(shù)木園> \n">。E836L11DO5 printf(" . . . . . . . \n">。S42ehLvE3M printf(" . . . . . . . \n">。501nNv
61、ZFis printf(" . . . <7.竹園> . . . . .. . . . \n">。jW1viftGw9 printf(" . . . . <5.東區(qū)運(yùn)動(dòng)場(chǎng)> \n ">。xS0DOYWHLP printf(" . . .
62、 . . \n">。LOZMkIqI0w printf(" . . . . .\n ">。ZKZUQsUJed printf(" . . . . . \n">。dGY2mcoKtT printf("
63、 <9.老校門> . . . . \n ">。rCYbSWRLIA printf(" . . . . .<8.新校門>\n\n">。FyXjoFlMWh printf("\t\t輸入任意鍵返回菜單">。 getchar(>。 getchar(>。
64、break。 case '2': clrscr(>。 travgraph(g,n,adj>。 getchar(>。 break。 case '3': clrscr(>。 printf("\t\t -----華-----農(nóng)-----地-----圖-----\n\n">。 printf(" <4.西園> . . . . . . . . . . <10.黑山運(yùn)動(dòng)場(chǎng)>\n&
65、quot;>。TuWrUpPObX printf(" . . . . . . \n">。7qWAq9jPqE printf(" . . . . . . . \n">。llVIWTNQFk printf(" . . .
66、 . . . \n">。yhUQsDgRT1 printf(" . . . . . . \n">。MdUZYnKS8I printf(" . . . . . . \n">。09T7t6eTno printf(" <1.校史館>
67、...<2.紅滿堂>..<3.行政樓> . . \n">。e5TfZQIUB5 printf(" . . . . . <6.樹(shù)木園> \n">。s1SovAcVQM printf(" . . . . . . . \n"
68、;>。GXRw1kFW5s printf(" . . . . . . . \n">。UTREx49Xj9 printf(" . . . <7.竹園> . . . . .. . . . \n">。8PQN3NDYyP printf(" . . .
69、 . <5.東區(qū)運(yùn)動(dòng)場(chǎng)> \n ">。mLPVzx7ZNw printf(" . . . . . \n">。AHP35hB02d printf(" . . . . .\n ">。NDOcB141gT
70、 printf(" . . . . . \n">。1zOk7Ly2vA printf(" <9.老校門> . . . . \n ">。fuNsDv23Kh printf(" . . . . .<8.新校門>
71、;\n\n">。tqMB9ew4YX printf("\2你現(xiàn)在地位置是<請(qǐng)輸入1-10):\n">。 printf("\t\t\t1.校史館 2.紅滿堂 3.行政樓 4.西園 5.東區(qū)運(yùn)動(dòng)場(chǎng)\n">。HmMJFY05dE printf("\t\t\t6.樹(shù)木園 7.竹園 8.新校門 9.老校門 10.黑山運(yùn)動(dòng)場(chǎng)\n">。ViLRaIt6sk printf("\t你地輸入是:">。 s
72、canf("%d",&i>。 getchar(>。 printf("\2你想要去地地方是<請(qǐng)輸入1-10):\n">。 printf("\t\t\t1.校史館 2.紅滿堂 3.行政樓 4.西園 5.東區(qū)運(yùn)動(dòng)場(chǎng)\n">。9eK0GsX7H1 printf("\t\t\t6.樹(shù)木園 7.竹園 8.新校門 9.老校門 10.黑山運(yùn)動(dòng)場(chǎng)\n">。naK8ccr8VI printf("\t你地輸
73、入是:">。 scanf("%d",&j>。 getchar(>。 path(&G,i,j>。 getchar(>。 creat(&G>。 do{ printf("是否繼續(xù)查詢啊? Y/N">。 char ch。 int flag=1。 scanf("%c",&ch>。 getchar(>。 if(ch == 'Y'
74、 || ch == 'y'> { flag = 1。 i = 1。 printf("\2你現(xiàn)在地位置是<請(qǐng)輸入1-10):\n">。 scanf("%d",&i>。 getchar(>。 printf("\2你想要去地地方是<請(qǐng)輸入1-10):\n">。 scanf("%d",&j>。 getchar(>。 p
75、ath(&G,i,j>。 getchar(>。 creat(&G>。 continue 。 } else flag = 0。 break。 }while(1>。 break。 case '0': clrscr(>。 printf("\n\t\t--------按任意鍵退出!--------\n\n">。 printf("\n\t\t--------謝謝您地使用!--------\n">。 getchar(>。 exit(0>。 break。 default: printf("\n輸入錯(cuò)誤,請(qǐng)重新輸入0-3之間地?cái)?shù)字:\n">。 getchar(>。 break。 } } getchar(>。 }
- 溫馨提示:
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. 裝配圖網(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ī)骸氛n件
- 高速鐵路同相供電
- 二年級(jí)語(yǔ)文下冊(cè)-第4單元-13《激光的話》課件4-語(yǔ)文S版
- 《一枚金幣》課件
- 1441單項(xiàng)式乘以多項(xiàng)式(課件)PPT
- 12分式的乘法和除法
- 常見(jiàn)蔬菜分類
- 保險(xiǎn)客戶經(jīng)營(yíng)1361法則
- 現(xiàn)場(chǎng)目視管理與看板管理
- 高中政治-4.2文化在繼承中發(fā)展課件1-新人教版必修3PPT文檔
- 八年級(jí)生物上冊(cè) 181 微生物在生物圈中的作用(第2課時(shí))課件(2)(新版)北師大版
- 人生的夢(mèng)想
- 動(dòng)物生理學(xué)-第六章課件
- IE經(jīng)典管理基礎(chǔ)
- AfternoonandEvening課件