版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì) 報(bào) 告</p><p> 課程名稱 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) </p><p> 題 目 校園導(dǎo)航 </p><p> 指導(dǎo)教師 </p><p> 設(shè)計(jì)起始日期 5.9~5.16 </p><
2、;p> 學(xué) 院 計(jì)算機(jī)學(xué)院 </p><p> 系 別 計(jì)算機(jī)科學(xué)與工程 </p><p> 學(xué)生姓名 </p><p> 班級(jí)/學(xué)號(hào) </p>&
3、lt;p> 成 績(jī) </p><p><b> 需求分析</b></p><p> 本次實(shí)驗(yàn)設(shè)計(jì)的任務(wù)是實(shí)現(xiàn)一個(gè)簡(jiǎn)易的北京信息科技大學(xué)的校園導(dǎo)航平面圖。設(shè)計(jì)要包括下列要求:</p><p> 設(shè)計(jì)你的學(xué)校的平面圖,至少包括10個(gè)以上的場(chǎng)所,每?jī)蓚€(gè)場(chǎng)所間可以有不同的路
4、,且路長(zhǎng)也可能不同,找出從任意場(chǎng)所到達(dá)另一場(chǎng)所的最佳路徑(最短路徑)。</p><p> 本課題實(shí)現(xiàn)校園多個(gè)場(chǎng)所(至少10個(gè))的最短路徑求解。</p><p> (1)輸入的形式和輸入值的范圍:本系統(tǒng)主要數(shù)據(jù)類型為字符型char及整形int,char型主要包括單位編號(hào),單位名稱,單位簡(jiǎn)介,功能編號(hào);輸入功能編號(hào)與單位編號(hào)進(jìn)行操作。</p><p> (2 )
5、輸出的形式:輸出則通過已有的信息數(shù)據(jù),通過相關(guān)的操作輸出相應(yīng)信息。</p><p> (3) 程序所能達(dá)到的功能:本程序可供任何人使用,主要功能1.瀏覽各單位及簡(jiǎn)介;2.查看所有游覽路線;3.選擇出發(fā)點(diǎn)和目的地求出最佳路徑;4.查看某一單位信息。</p><p> (4)測(cè)試數(shù)據(jù):包括正確的輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果。</p><p> a
6、.首先看到的是校園導(dǎo)航系統(tǒng)的菜單:</p><p> b.查看瀏覽路線等待輸入起始景點(diǎn):</p><p> C.選擇出發(fā)點(diǎn)與目的地 等待輸入起始景點(diǎn)與目的地編號(hào):</p><p> d.參看景點(diǎn)信息等待輸入景點(diǎn)編號(hào):</p><p><b> 概要設(shè)計(jì)</b></p><p> 本系統(tǒng)包
7、含一個(gè)文件。設(shè)計(jì)分有菜單,顯示信息,弗洛伊德算法,迪杰斯特拉算法,查找景點(diǎn)信息等程序段。主程序?yàn)檎到y(tǒng)的入口處,菜單主要實(shí)現(xiàn)顯示系統(tǒng)功能,顯示信息主要實(shí)現(xiàn)顯示景點(diǎn)信息,弗洛伊德算法主要實(shí)現(xiàn)求兩景點(diǎn)之間最短路徑,迪杰斯特拉算法實(shí)現(xiàn)求兩景點(diǎn)之間最短路徑,查找景點(diǎn)信息主要實(shí)現(xiàn)顯示某一景點(diǎn)信息。</p><p> 系統(tǒng)首先通過主程序調(diào)用void main( );進(jìn)入系統(tǒng)主菜單函數(shù),根據(jù)用戶的選擇可分別進(jìn)入:1.瀏覽各景
8、點(diǎn)及簡(jiǎn)介;2.查看所有游覽路線;3.選擇出發(fā)點(diǎn)和目的地求出最佳路徑;4.查看景點(diǎn)信息;5.退出系統(tǒng)。</p><p> 選擇“瀏覽各景點(diǎn)及簡(jiǎn)介”項(xiàng),顯示十個(gè)景點(diǎn)的有關(guān)信息,包括景點(diǎn)編號(hào),景點(diǎn)名稱,景點(diǎn)簡(jiǎn)介。</p><p> 選擇“查看所有游覽路線”項(xiàng),會(huì)進(jìn)入輸入起始景點(diǎn)編號(hào)的界面,輸入正確編號(hào)后會(huì)顯示起始景點(diǎn)到其余九個(gè)景點(diǎn)的最短路線的方案。</p><p>
9、 選擇“選擇出發(fā)點(diǎn)和目的地”項(xiàng),會(huì)進(jìn)入輸入起始景點(diǎn)與目的景點(diǎn)的界面,輸入起始景</p><p> 點(diǎn)與目的景點(diǎn),并有空格隔開就得到兩景點(diǎn)之間的最佳路徑。</p><p> 選擇“查看景點(diǎn)信息”項(xiàng),會(huì)進(jìn)入輸入要查看的景點(diǎn)的界面,如入后會(huì)顯示該景點(diǎn)的有關(guān)信息。</p><p> 選擇“退出系統(tǒng)”項(xiàng),就會(huì)退出程序。</p><p><b
10、> 詳細(xì)設(shè)計(jì)</b></p><p> (1)十三個(gè)單位的圖</p><p><b> 0: 前門</b></p><p><b> 1:圖書館 </b></p><p><b> 2:教二樓</b></p><p><
11、;b> 3:實(shí)驗(yàn)樓</b></p><p><b> 4:操場(chǎng)</b></p><p><b> 5:教一樓</b></p><p><b> 6:食堂</b></p><p><b> 7: 水房</b></p>
12、<p><b> 8:學(xué)一公寓</b></p><p><b> 9:學(xué)二公寓</b></p><p><b> 10:學(xué)三公寓</b></p><p><b> 11:學(xué)四公寓</b></p><p><b> 12:后門
13、</b></p><p> ?。?)主程序流程圖: </p><p> (3)弗洛伊德的算法:</p><p> void Floyd(MGraph *G)</p><p><b> {</b></p><p> int v,u,i,w,k,j,flag=1,p[10][10]
14、[10],D[10][10];//定義參數(shù)</p><p> for(v=0;v<G->vexnum;v++)</p><p> for(w=0;w<G->vexnum;w++)</p><p><b> {</b></p><p> D[v][w]=G->arcs[v][w].ad
15、j;</p><p> for(u=0;u<G->vexnum;u++)</p><p> p[v][w][u]=0;</p><p> if(D[v][w]<INFINITY)</p><p><b> {</b></p><p> p[v][w][v]=1;p[v]
16、[w][w]=1;</p><p><b> }</b></p><p><b> }</b></p><p> for(u=0;u<G->vexnum;u++)</p><p> for(v=0;v<G->vexnum;v++)</p><p&g
17、t; for(w=0;w<G->vexnum;w++)</p><p> if(D[v][u]+D[u][w]<D[v][w])</p><p><b> {</b></p><p> D[v][w]=D[v][u]+D[u][w];</p><p> for(i=0;i<G->v
18、exnum;i++)</p><p> p[v][w][i]=p[v][u][i]||p[u][w][i];</p><p><b> }</b></p><p> while(flag)</p><p><b> {</b></p><p> cout<&l
19、t;"請(qǐng)輸入出發(fā)點(diǎn)和目的地的編號(hào)(用空格隔開):";</p><p> cin>>k>>j; </p><p> if(k<0||k>G->vexnum||j<0||j>G->vexnum) //判斷輸入的景點(diǎn)編號(hào)正確與否</p><p><b> {<
20、;/b></p><p> cout<<"景點(diǎn)編號(hào)不存在!請(qǐng)重新輸入出發(fā)點(diǎn)和目的地的編號(hào):";</p><p> cin>>k>>j;</p><p><b> }</b></p><p> if(k>=0&&k<G->
21、;vexnum&&j>=0&&j<G->vexnum)</p><p><b> flag=0;</b></p><p><b> }</b></p><p> cout<<G->vexs[k].name; //輸出景點(diǎn)
22、名稱</p><p> for(u=0;u<G->vexnum;u++)</p><p> if(p[k][j][u]&&k!=u&&j!=u) //輸出路線</p><p> cout<<"-->"<<G->vexs[u].name;</
23、p><p> cout<<"-->"<<G->vexs[j].name;</p><p> cout<<" 總路線長(zhǎng)"<<D[k][j]<<endl; //輸出總路線長(zhǎng)度</p><p><b> }</b></p>
24、<p><b> 調(diào)試分析</b></p><p> (1) 在程序設(shè)計(jì)中遇到了輸出景點(diǎn)信息的表不整齊,用setw()解決了;默認(rèn)的界面太小,不能完整的看到輸出信息,用了system("mode con: cols=100 lines=40")命令語(yǔ)句設(shè)置了行數(shù)和列數(shù)。</p><p><b> (2)經(jīng)驗(yàn)和體會(huì)<
25、/b></p><p> 經(jīng)過一段時(shí)間來的努力,終于初步實(shí)現(xiàn)系統(tǒng)功能,但肯定還存在不少漏洞。這是我們第三次做課程設(shè)計(jì),也是第三次編寫一個(gè)比較完整和具有一定功能的的系統(tǒng)代碼,第二次幾個(gè)人合作制作系統(tǒng),制作過程中存在儲(chǔ)多的不足,遇到過許多的困難,曾經(jīng)灰心喪氣過,但是最終還是堅(jiān)持了下來,雖然做得不怎么樣,但我們已經(jīng)努力地去做了,由于基礎(chǔ)也不怎么扎實(shí),所以困難會(huì)比其它組更多更艱巨。剛開始做系統(tǒng)缺乏全局觀念,分工也
26、不是很合理,做得很零碎,所以在組合的時(shí)候也出現(xiàn)了很多問題。</p><p><b> 使用說明和測(cè)試結(jié)果</b></p><p> 打開系統(tǒng),首先會(huì)進(jìn)入系統(tǒng)的主菜單:</p><p> 瀏覽各景點(diǎn)及簡(jiǎn)介 </p><p> 查看所有游覽路線 </p><p><b> 選擇
27、出發(fā)點(diǎn)和目的地</b></p><p><b> 查看景點(diǎn)信息</b></p><p><b> 退出系統(tǒng)</b></p><p> 用戶可以進(jìn)行如下操作:</p><p> 1、如果你想瀏覽各景點(diǎn)及簡(jiǎn)介的話,請(qǐng)輸入“1”,并回車。此時(shí)界面上將顯示出各景點(diǎn)的編號(hào)、名稱及其簡(jiǎn)介。&
28、lt;/p><p> 2、如果你想查看某一景點(diǎn)的所有游覽路線,可選擇2操作。輸入“2”,并回車。此時(shí),系統(tǒng)會(huì)提示你輸入某景點(diǎn)的編號(hào)。輸入編號(hào)后,回車,便可以看到該景點(diǎn)的所有游覽路線。</p><p> 若輸入的景點(diǎn)編號(hào)錯(cuò)誤就會(huì)有提示重新輸入。</p><p> 3、如果你想查看兩個(gè)景點(diǎn)之間的最短路線的,可選擇3操作。輸入“3”,并回車。此時(shí),系統(tǒng)會(huì)提示你要輸入起始
29、景點(diǎn)與終點(diǎn)的編號(hào)。輸入編號(hào)后,回車,此時(shí),便可以見到這兩個(gè)景點(diǎn)之間的最短路徑。</p><p> 4、如果你想查看具體某些景點(diǎn)的簡(jiǎn)介及信息,可以選擇4操作。輸入“4”,并回車。此時(shí),系統(tǒng)會(huì)提示全部景點(diǎn)的對(duì)應(yīng)的編號(hào),選擇你要查看的景點(diǎn)信息,輸入其編號(hào),回車,此時(shí),屏幕上將會(huì)顯示出該景點(diǎn)的各種信息。若輸入的景點(diǎn)編號(hào)錯(cuò)誤就會(huì)有提示重新輸入。</p><p> 5、在主菜單鍵入“5” ,退出程
30、序。</p><p><b> 測(cè)試結(jié)果</b></p><p><b> 菜單界面</b></p><p> 進(jìn)入“瀏覽各景點(diǎn)及簡(jiǎn)介”后,輸出景點(diǎn)信息的界面。</p><p> 進(jìn)入“查看所有游覽路線”,顯示輸出景點(diǎn)編號(hào)為0的景點(diǎn)到其余九個(gè)景點(diǎn)的最佳路線。</p><p
31、> 進(jìn)入“選擇出發(fā)點(diǎn)和目的地”,輸入出發(fā)點(diǎn)1和目的點(diǎn)9后輸出的的最佳路線的界面。</p><p> 進(jìn)入“查看景點(diǎn)信息”,輸入要查看的景點(diǎn)編號(hào),輸出景點(diǎn)信息的界面。</p><p> 輸入要查詢的景點(diǎn)編號(hào)錯(cuò)誤,提示重新輸入。</p><p><b> 退出程序界面。</b></p><p><b>
32、; 心得體會(huì)</b></p><p> 做一個(gè)系統(tǒng)之前還應(yīng)該做好全面的安排,對(duì)一個(gè)系統(tǒng)的整個(gè)流程及功能實(shí)現(xiàn)有一個(gè)很好的統(tǒng)籌,幾個(gè)人合作的功能可拆才拆,不可則由一個(gè)人主要負(fù)責(zé),其它人幫忙思考,出意見,做系統(tǒng)之前幾個(gè)人必須先做對(duì)系統(tǒng)做一次較詳細(xì)的探討研究,然后才開始分工,一個(gè)階段后組員應(yīng)互相交流情況,以達(dá)到一致。另在遇到困難時(shí)組員不能解決,應(yīng)查資料或問其它懂的同學(xué),參考一下意見,再結(jié)合自己的想法,最后
33、實(shí)現(xiàn)自己想實(shí)現(xiàn)的功能。</p><p><b> 附錄</b></p><p> #define INFINITY 10000 /*無(wú)窮大*/</p><p> #define MAX_VERTEX_NUM 40</p><p> #define MAX 40</p>
34、<p> #include<stdlib.h></p><p> #include<string.h></p><p> #include <iostream></p><p> using namespace std;</p><p> #include <iomanip>
35、;</p><p> typedef struct ArCell</p><p><b> {</b></p><p> int adj; //路徑長(zhǎng)度</p><p> }ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];</p><p&
36、gt; typedef struct //圖中頂點(diǎn)表示主要景點(diǎn),存放景點(diǎn)的編號(hào)、名稱、簡(jiǎn)介等信息,</p><p><b> {</b></p><p> char name[30];</p><p><b> int num;</b></p><p> char introducti
37、on[100];//簡(jiǎn)介</p><p> }infotype;</p><p> typedef struct</p><p><b> {</b></p><p> infotype vexs[MAX_VERTEX_NUM];</p><p> AdjMatrix arcs;<
38、/p><p> int vexnum,arcnum;</p><p><b> }</b></p><p><b> MGraph;</b></p><p><b> MGraph b;</b></p><p> MGraph InitGraph(
39、void);</p><p> void Menu(void);</p><p> void Browser(MGraph *G);</p><p> void ShortestPath_DIJ(MGraph * G);</p><p> void Floyd(MGraph *G);</p><p> voi
40、d Search(MGraph *G);</p><p> /***********************主函數(shù)*******************************/</p><p> void main(void)</p><p><b> {</b></p><p> system("c
41、olor 1f");</p><p> system("mode con: cols=100 lines=40");</p><p><b> int i;</b></p><p> b=InitGraph();</p><p><b> Menu();</b>
42、</p><p><b> cin>>i;</b></p><p> while(i!=5)</p><p><b> {</b></p><p><b> switch(i)</b></p><p><b> {<
43、/b></p><p> case 1:system("cls");Browser(&b);Menu();break;</p><p> case 2:system("cls");ShortestPath_DIJ(&b);Menu();break;</p><p> case 3:system(&q
44、uot;cls");Floyd(&b);Menu();break;</p><p> case 4:system("cls");Search(&b);Menu();break;</p><p> case 5:exit(1);break;</p><p> default:break;</p><
45、;p><b> }</b></p><p><b> cin>>i;</b></p><p><b> }</b></p><p><b> }</b></p><p> /***************************
46、**********************************/</p><p> /*************************定義景點(diǎn)編號(hào),名稱及簡(jiǎn)介************/</p><p> MGraph InitGraph(void)</p><p><b> {</b></p><p>&l
47、t;b> MGraph G;</b></p><p><b> int i,j;</b></p><p> G.vexnum=10; //十個(gè)景點(diǎn)</p><p> G.arcnum=14; //鄰接矩陣</p><p> for(i=0;i<G.vexnum;i
48、++)</p><p> G.vexs[i].num=i;</p><p> //各景點(diǎn)的代碼,名稱及簡(jiǎn)介</p><p> strcpy(G.vexs[0].name,"前門 ");</p><p> strcpy(G.vexs[0].introduction,"面南.對(duì)面為北京外國(guó)專家大廈
49、 ");</p><p> strcpy(G.vexs[1].name,"圖書館 ");</p><p> strcpy(G.vexs[1].introduction,"藏書幾十萬(wàn)冊(cè),設(shè)施良好,一二樓均有閱覽室 ");</p><p>
50、 strcpy(G.vexs[2].name,"教二樓 ");</p><p> strcpy(G.vexs[2].introduction,"學(xué)校的主要教學(xué)樓,共六層,有多個(gè)專業(yè)實(shí)驗(yàn) ");</p><p> strcpy(G.vexs[3].name,"實(shí)驗(yàn)樓 ");</p>
51、<p> strcpy(G.vexs[3].introduction,"緊鄰教二樓,共七層,主要為公共實(shí)驗(yàn)室,六層有通宵自習(xí)室 ");</p><p> strcpy(G.vexs[4].name,"操場(chǎng) ");</p><p> strcpy(G.vexs[4].introduction,"全新塑膠跑道,中間為人工草
52、皮足球場(chǎng),排球場(chǎng)和籃球場(chǎng) ");</p><p> strcpy(G.vexs[5].name,"教一樓 ");</p><p> strcpy(G.vexs[5].introduction,"學(xué)校各機(jī)關(guān)單位辦公樓和雙語(yǔ)教室 ");</p><p>
53、strcpy(G.vexs[6].name,"食堂 ");</p><p> strcpy(G.vexs[6].introduction,"標(biāo)準(zhǔn)食堂,兩層,清潔衛(wèi)生 ");</p><p> strcpy(G.vexs[7].name,"水房 ");<
54、/p><p> strcpy(G.vexs[7].introduction,"配備自動(dòng)刷卡系統(tǒng) ");</p><p> strcpy(G.vexs[8].name,"學(xué)一公寓");</p><p> strcpy(G.vexs[8].introd
55、uction,"光電通信學(xué)院男生公寓 ");</p><p> strcpy(G.vexs[9].name,"學(xué)二公寓");</p><p> strcpy(G.vexs[9].introduction,"女生公寓
56、 ");</p><p> strcpy(G.vexs[10].name,"學(xué)三公寓");</p><p> strcpy(G.vexs[10].introduction,"計(jì)算機(jī)學(xué)院男生公寓 ");</p>&
57、lt;p> strcpy(G.vexs[11].name,"學(xué)四公寓");</p><p> strcpy(G.vexs[11].introduction,"大一新生公寓 ");</p><p> strcpy(G.vexs[12].name,"
58、后門 ");</p><p> strcpy(G.vexs[12].introduction,"面北,對(duì)面有便利的小超市 ");</p><p> for(i=0;i<G.vexnum;i++)</p><p> for(j=0;j<G.vexnum;j++)
59、</p><p> G.arcs[i][j].adj=INFINITY;</p><p> //各景點(diǎn)之間的距離,沒有的均為無(wú)窮大</p><p> G.arcs[0][1].adj=50;</p><p> G.arcs[0][2].adj=100;</p><p> G.arcs[1][5].adj=2
60、0;</p><p> G.arcs[1][6].adj=75;</p><p> G.arcs[2][3].adj=10;</p><p> G.arcs[2][5].adj=60;</p><p> G.arcs[3][4].adj=20;</p><p> G.arcs[4][11].adj=30;&l
61、t;/p><p> G.arcs[5][6].adj=30;</p><p> G.arcs[6][7].adj=10;</p><p> G.arcs[7][8].adj=20;</p><p> G.arcs[8][9].adj=10;</p><p> G.arcs[9][10].adj=20;</p
62、><p> G.arcs[10][12].adj=120;</p><p> G.arcs[11][12].adj=150;</p><p> for(i=0;i<G.vexnum;i++)</p><p> for(j=0;j<G.vexnum;j++)</p><p> G.arcs[j][i].
63、adj=G.arcs[i][j].adj;</p><p><b> return G;</b></p><p><b> }</b></p><p> /*********************************************************************************
64、**********/</p><p> /********************************主菜單(顯示輸入提示)****************************************/</p><p> void Menu()</p><p><b> { </b></p><p>
65、cout<<" 北京信息科技大學(xué)大學(xué)導(dǎo)游圖 "<<endl;</p><p> cout<<" ┏━━━━━━━━━━━━━━━━━━━━┓"<<endl;</p><p
66、> cout<<" ┃ 1.瀏覽各景點(diǎn)及簡(jiǎn)介 ┃"<<endl;</p><p> cout<<" ┃ 2.查看所有游覽路線 ┃"<<endl
67、;</p><p> cout<<" ┃ 3.選擇出發(fā)點(diǎn)和目的地 ┃"<<endl;</p><p> cout<<" ┃ 4.查看景點(diǎn)信息
68、┃"<<endl;</p><p> cout<<" ┃ 5.退出系統(tǒng) ┃"<<endl;</p><p> cout<<" ┗━━━━━━━━
69、━━━━━━━━━━━━┛"<<endl;</p><p> cout<<"Option-:";</p><p><b> }</b></p><p> /************************************顯示景點(diǎn)編號(hào)、名稱、簡(jiǎn)介*****************
70、***********************/</p><p> void Browser(MGraph *G)</p><p><b> {</b></p><p><b> int v;</b></p><p> cout<<"┏━━┳━━━━━━━━┳━━━━━
71、━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;</p><p> cout<<"┃編號(hào)┃景點(diǎn)名稱 ┃ 簡(jiǎn)介 ┃ "<<endl;</p><p> for(v=0;v<
72、;G->vexnum;v++)</p><p> cout<<"┃"<<G->vexs[v].num<<setw(5)<<"┃"<<G->vexs[v].name<<setw(10)<<"┃"<<G->vexs[v].introduc
73、tion<<setw(3)<<"┃"<<endl;</p><p> cout<<"┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;</p><p><b> }</b></p><p>
74、 /********************迪杰斯特拉算法來計(jì)算出起點(diǎn)到各個(gè)頂點(diǎn)之間的最短路徑,v0為起點(diǎn)***********************/</p><p> void ShortestPath_DIJ(MGraph * G)</p><p><b> {</b></p><p> int v,w,i,min,t=0,x,
75、flag=1,v0;</p><p> int final[20], D[20], p[20][20];</p><p> cout<<"┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;</p><p> cout<<"┃編號(hào)┃景點(diǎn)名稱
76、 ┃ 簡(jiǎn)介 ┃ "<<endl;</p><p> for(v=0;v<G->vexnum;v++)</p><p> cout<<"┃"<<G->vexs[v].num<&
77、lt;setw(5)<<"┃"<<G->vexs[v].name<<setw(10)<<"┃"<<G->vexs[v].introduction<<setw(3)<<"┃"<<endl;</p><p> cout<<"┗━
78、━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;</p><p> while(flag)</p><p><b> {</b></p><p> cout<<"請(qǐng)輸入一個(gè)起始景點(diǎn)編號(hào):";</p><p>&l
79、t;b> cin>>v0;</b></p><p> if(v0<0||v0>G->vexnum)</p><p><b> {</b></p><p> cout<<"景點(diǎn)編號(hào)不存在!請(qǐng)重新輸入景點(diǎn)編號(hào):";</p><p><
80、;b> cin>>v0;</b></p><p><b> }</b></p><p> if(v0>=0&&v0<G->vexnum)</p><p><b> flag=0;</b></p><p><b> }
81、</b></p><p> for(v=0;v<G->vexnum;v++)</p><p><b> {</b></p><p> final[v]=0;</p><p> D[v]=G->arcs[v0][v].adj;</p><p> for(w=0
82、;w<G->vexnum;w++)</p><p> p[v][w]=0;</p><p> if(D[v]<INFINITY)</p><p><b> {</b></p><p> p[v][v0]=1;p[v][v]=1;</p><p><b> }&
83、lt;/b></p><p><b> }</b></p><p> D[v0]=0;final[v0]=1;</p><p> for(i=1;i<G->vexnum;i++)</p><p><b> {</b></p><p> min=IN
84、FINITY;</p><p> for(w=0;w<G->vexnum;w++)</p><p> if(!final[w])</p><p> if(D[w]<min){v=w;min=D[w];}</p><p> final[v]=1;</p><p> for(w=0;w<G
85、->vexnum;w++)</p><p> if(!final[w]&&(min+G->arcs[v][w].adj<D[w]))</p><p><b> {</b></p><p> D[w]=min+G->arcs[v][w].adj;</p><p> for(x
86、=0;x<G->vexnum;x++) </p><p> p[w][x]=p[v][x];</p><p> p[w][w]=1;</p><p><b> }</b></p><p><b> }</b></p><p> for(v=0;v<
87、G->vexnum;v++)</p><p><b> {</b></p><p> if(v0!=v) cout<<G->vexs[v0].name;</p><p> for(w=0;w<G->vexnum;w++)</p><p><b> {</b>
88、;</p><p> if(p[v][w]&&w!=v0) cout<<"-->"<<G->vexs[w].name;</p><p><b> t++;</b></p><p><b> }</b></p><p>
89、if(t>G->vexnum-1&&v0!=v) cout<<" 總路線長(zhǎng)"<<D[v]<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> /***********
90、**********************Floyd函數(shù)***************************************/</p><p> void Floyd(MGraph *G)</p><p><b> {</b></p><p> int v,u,i,w,k,j,flag=1,p[10][10][10],D[10
91、][10];</p><p> cout<<"┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;</p><p> cout<<"┃編號(hào)┃景點(diǎn)名稱 ┃ 簡(jiǎn)介
92、┃ "<<endl;</p><p> for(v=0;v<G->vexnum;v++)</p><p> cout<<"┃"<<G->vexs[v].num<<setw(5)<<"┃"<<G->vexs[v].name&l
93、t;<setw(10)<<"┃"<<G->vexs[v].introduction<<setw(3)<<"┃"<<endl;</p><p> cout<<"┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl
94、;</p><p> for(v=0;v<G->vexnum;v++)</p><p> for(w=0;w<G->vexnum;w++)</p><p><b> {</b></p><p> D[v][w]=G->arcs[v][w].adj;</p><p&
95、gt; for(u=0;u<G->vexnum;u++)</p><p> p[v][w][u]=0;</p><p> if(D[v][w]<INFINITY)</p><p><b> {</b></p><p> p[v][w][v]=1;p[v][w][w]=1;</p>
96、<p><b> }</b></p><p><b> }</b></p><p> for(u=0;u<G->vexnum;u++)</p><p> for(v=0;v<G->vexnum;v++)</p><p> for(w=0;w<G-&
97、gt;vexnum;w++)</p><p> if(D[v][u]+D[u][w]<D[v][w])</p><p><b> {</b></p><p> D[v][w]=D[v][u]+D[u][w];</p><p> for(i=0;i<G->vexnum;i++)</p>
98、<p> p[v][w][i]=p[v][u][i]||p[u][w][i];</p><p><b> }</b></p><p> while(flag)</p><p><b> {</b></p><p> cout<<"請(qǐng)輸入出發(fā)點(diǎn)和目的地的編
99、號(hào)(用空格隔開):";</p><p> cin>>k>>j;</p><p> if(k<0||k>G->vexnum||j<0||j>G->vexnum)</p><p><b> {</b></p><p> cout<<&q
100、uot;景點(diǎn)編號(hào)不存在!請(qǐng)重新輸入出發(fā)點(diǎn)和目的地的編號(hào):";</p><p> cin>>k>>j;</p><p><b> }</b></p><p> if(k>=0&&k<G->vexnum&&j>=0&&j<G->
101、;vexnum)</p><p><b> flag=0;</b></p><p><b> }</b></p><p> cout<<G->vexs[k].name;</p><p> for(u=0;u<G->vexnum;u++)</p>&
102、lt;p> if(p[k][j][u]&&k!=u&&j!=u)</p><p> cout<<"-->"<<G->vexs[u].name;</p><p> cout<<"-->"<<G->vexs[j].name;</p&g
103、t;<p> cout<<" 總路線長(zhǎng)"<<D[k][j]<<endl;</p><p> }//Floyd end</p><p> /************************************查找景點(diǎn)*************************************************
104、******/</p><p> void Search(MGraph *G)</p><p><b> {</b></p><p> int k,v,flag=1;</p><p> cout<<"┏━━┳━━━━━━━━┓"<<endl;</p>&l
105、t;p> cout<<"┃編號(hào)┃景點(diǎn)名稱 ┃"<<endl;</p><p> for(v=0;v<G->vexnum;v++)</p><p> cout<<"┃"<<G->vexs[v].num<<setw(5)<<"┃&q
106、uot;<<G->vexs[v].name<<setw(10)<<"┃"<<endl;</p><p> cout<<"┗━━┻━━━━━━━━┛"<<endl;</p><p> while(flag)</p><p><b> {
107、</b></p><p> cout<<"請(qǐng)輸入要查詢的景點(diǎn)編號(hào):";</p><p><b> cin>>k;</b></p><p> if(k<0||k>G->vexnum)</p><p><b> {</b>
108、</p><p> cout<<"景點(diǎn)編號(hào)不存在!請(qǐng)重新輸入景點(diǎn)編號(hào):";</p><p><b> cin>>k;</b></p><p><b> }</b></p><p> if(k>=0&&k<G->ve
109、xnum)</p><p><b> flag=0;</b></p><p><b> }</b></p><p> cout<<"┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;</p><p>
110、; cout<<"┃編號(hào)┃景點(diǎn)名稱 ┃簡(jiǎn)介 ┃"<<endl;</p><p> cout<<"┃"<<G->vexs[k].num<<setw(5)<<"┃"
111、;<<G->vexs[k].name<<setw(10)<<"┃"<<G->vexs[k].introduction<<setw(3)<<"┃"<<endl;</p><p> cout<<"┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)校園導(dǎo)航
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---校園導(dǎo)航問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—校園導(dǎo)航問題報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-校園導(dǎo)航系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)導(dǎo)航圖
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)導(dǎo)航系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)導(dǎo)航系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)游咨詢
- 數(shù)據(jù)結(jié)構(gòu)_校園導(dǎo)游系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---校園導(dǎo)游系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)游咨詢
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-校園導(dǎo)游咨詢
- 數(shù)據(jù)結(jié)構(gòu) 校園導(dǎo)游系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---校園導(dǎo)游系統(tǒng)設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---校園交通導(dǎo)游系統(tǒng)
評(píng)論
0/150
提交評(píng)論