版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)</p><p> 題 目 校園導(dǎo)游咨詢程序設(shè)計(jì) </p><p> 學(xué) 號(hào) </p><p> 學(xué)生姓名 </p><p> 院 系 </p><p> 專 業(yè) &l
2、t;/p><p> 指導(dǎo)教師 </p><p> 二O一二 年 月 日</p><p><b> 題目的內(nèi)容及要求</b></p><p> 設(shè)計(jì)一個(gè)校園導(dǎo)游程序,為來(lái)訪的客人提供各種信息查詢服務(wù)。</p><p><b> 需求分析</b><
3、/p><p> ?。?)設(shè)計(jì)你的學(xué)校的校園平面圖,所含景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)表示學(xué)校各景點(diǎn),存放景點(diǎn)名稱、代號(hào)、簡(jiǎn)介等信息;以邊表示路徑,存放路徑長(zhǎng)度等相關(guān)信息。</p><p> ?。?)為來(lái)訪客人提供圖中任意景點(diǎn)的問(wèn)路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的一條最短的簡(jiǎn)單路徑。 </p><p> ?。?)為來(lái)訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。</p>
4、<p><b> 3、概要設(shè)計(jì)</b></p><p><b> 1.功能模塊圖;</b></p><p> void CreateUDN();//創(chuàng)建無(wú)向網(wǎng)</p><p> void Search();//查詢景點(diǎn)信息</p><p> void Shortestpath(
5、int i);//計(jì)算最短路徑</p><p> void Output(int sight1,int sight2);//輸出函數(shù)</p><p> 2.各個(gè)模塊詳細(xì)的功能描述。</p><p> CreateUDN();//創(chuàng)建無(wú)向網(wǎng)、主要用來(lái)保存各景點(diǎn)信息</p><p> Search();//查詢景點(diǎn)信息、景點(diǎn)的名稱及介紹&
6、lt;/p><p> Shortestpath(int i);//計(jì)算兩景點(diǎn)間最短路徑</p><p> Output(int sight1,int sight2);//輸出兩景點(diǎn)最短路徑及信息</p><p><b> 3.模塊圖</b></p><p><b> 詳細(xì)設(shè)計(jì)</b></p
7、><p><b> 一、圖的儲(chǔ)存結(jié)構(gòu)</b></p><p> #define Max 30000</p><p> #define NUM 10</p><p> typedef struct ArcCell</p><p><b> {</b></p>
8、<p> int adj; /* 相鄰接的景點(diǎn)之間的路程 */ </p><p> }ArcCell; /* 定義邊的類型 */ </p><p> typedef struct VertexType</p><p><b> {</b></p>
9、;<p> int number; /* 景點(diǎn)編號(hào) */ </p><p> char *sight; /* 景點(diǎn)名稱 */</p><p> char *description;/* 景點(diǎn)描述 */</p><p> }VertexType; /* 定義頂點(diǎn)的類
10、型 */ </p><p> typedef struct</p><p><b> {</b></p><p> VertexType vex[NUM]; /* 圖中的頂點(diǎn),即為景點(diǎn) */</p><p> ArcCell arcs[NUM][NUM];/*
11、160;圖中的邊,即為景點(diǎn)間的距離 */</p><p> int vexnum,arcnum;/* 頂點(diǎn)數(shù),邊數(shù) */ </p><p> }MGraph; /* 定義圖的類型 </p><p><b> 算法</b></p><p>&l
12、t;b> 1.主程序</b></p><p> void main()</p><p><b> {</b></p><p> int v0,v1;</p><p><b> char ck;</b></p><p> CreateUDN(NUM
13、,11);</p><p><b> do</b></p><p><b> { </b></p><p> ck=Menu();</p><p> switch(ck)</p><p><b> {</b></p><p&
14、gt;<b> case '1':</b></p><p> system("cls");</p><p> // narrate();</p><p> printf("\n\n\t\t\t請(qǐng)選擇起點(diǎn)景點(diǎn)(0~9):");</p><p> scanf(
15、"%d",&v0);</p><p> printf("\t\t\t請(qǐng)選擇終點(diǎn)景點(diǎn)(0~9):");</p><p> scanf("%d",&v1);</p><p> ShortestPath(v0); /* 計(jì)算兩個(gè)景點(diǎn)之間的最短路徑 */<
16、/p><p> output(v0,v1); /* 計(jì)算兩個(gè)景點(diǎn)之間的最短路徑 */</p><p> printf("\n\n\t\t\t\t請(qǐng)按任意鍵繼續(xù)...\n");</p><p> getchar();</p><p> getchar();</p>&l
17、t;p><b> break;</b></p><p> case '2':search();</p><p><b> break;</b></p><p><b> case '3':</b></p><p> system(
18、"cls");</p><p> //narrate();</p><p><b> x[0]=1; </b></p><p> HaMiTonian(1);</p><p> printf("\n\n\t\t\t\t請(qǐng)按任意鍵繼續(xù)...\n");</p>
19、<p> getchar();</p><p> getchar();</p><p><b> break;</b></p><p><b> };</b></p><p> }while(ck!='e');</p><p><b&
20、gt; }</b></p><p><b> 輸出程序</b></p><p> void output(int sight1,int sight2) </p><p><b> {</b></p><p> int a,b,c,d,q=0;</p><
21、p> a=sight2; </p><p> if(a!=sight1) /* 如果景點(diǎn)二不和景點(diǎn)一輸入重合,則進(jìn)行 */ </p><p><b> {</b></p><p> printf("\n\t從%s到%s的最短路徑是",G.vex[sight1].sight,G.vex[
22、sight2].sight);/* 輸出提示信息 */ </p><p> printf("\t(最短距離為 %dm.)\n\n\t",D[a]); </p><p> printf("\t%s",G.vex[sight1].sight); </p><p> d=sight1;
23、60;/* 將景點(diǎn)一的編號(hào)賦值給d */ </p><p> for(c=0;c<NUM;++c)</p><p><b> {</b></p><p> gate:; </p><p> P[a][sight1]=0;</p><p>
24、; for(b=0;b<NUM;b++)</p><p><b> {</b></p><p> if(G.arcs[d][b].adj<30000&&P[a][b]) /* 如果景點(diǎn)一和它的一個(gè)臨界點(diǎn)之間存在路徑且最短路徑 */ </p><p><b> {<
25、/b></p><p> printf("-->%s",G.vex[b].sight); /* 輸出此節(jié)點(diǎn)的名稱 */ </p><p> q=q+1; /* 計(jì)數(shù)變量加一,滿8控制輸出時(shí)的換行 */ </p><p> P[a][b]=0;</p><p
26、> d=b; /* 將b作為出發(fā)點(diǎn)進(jìn)行下一次循環(huán)輸出,如此反復(fù) */</p><p> if(q%9==0) printf("\n");</p><p> goto gate;</p><p><b> }</b></p><p><b>
27、 }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 求最短路徑 </b></p><p> void Sh
28、ortestPath(int num)</p><p><b> {</b></p><p> int v,w,i,t; </p><p> int final[NUM];</p><p><b> int min;</b></p><p> for(v=0;v&l
29、t;NUM;v++)</p><p><b> {</b></p><p> final[v]=0; </p><p> D[v]=G.arcs[num][v].adj;</p><p> for(w=0;w<NUM;w++)</p><p> P[v][w]=0;</p&g
30、t;<p> if(D[v]<30000) </p><p><b> {</b></p><p> P[v][num]=1;</p><p> P[v][v]=1;</p><p><b> }</b></p><p><b> }
31、</b></p><p><b> D[num]=0;</b></p><p> final[num]=1; </p><p> for(i=0;i<NUM;++i) </p><p><b> {</b></p><p> min=
32、Max; </p><p> for(w=0;w<NUM;++w)</p><p> if(!final[w]) </p><p> if(D[w]<min) </p><p><b> {</b></p><p><b> v=w;</b>
33、</p><p><b> min=D[w];</b></p><p><b> }</b></p><p> final[v]=1; </p><p> for(w=0;w<NUM;++w) </p><p> if(!final[w]&&
34、((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(t=0;t<NUM;t++)</p><p> P[w][t]=P[v][t];</p>
35、<p> P[w][w]=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 說(shuō)明函數(shù)</b></p><p> v
36、oid narrate()</p><p><b> {</b></p><p> int i,k=0;</p><p> printf("\n\t\t*****************歡迎使用校園導(dǎo)游程序***************\n");</p><p> printf("\
37、n\t\t********************南京信息工程大學(xué)*******************\n");</p><p> printf("\t__________________________________________________________________\n");</p><p> printf("\t\t景點(diǎn)名稱
38、\t\t|\t景點(diǎn)描述\n");</p><p> printf("\t________________________________|_________________________________\n");</p><p> for(i=0;i<NUM;i++)</p><p><b> {</b&g
39、t;</p><p> printf("\t (%2d)%-10s\t\t\t|\t%-25s\n",i,G.vex[i].sight,G.vex[i].description);</p><p><b> k=k+1;</b></p><p><b> }</b></p><
40、p> printf("\t________________________________|_________________________________\n");</p><p><b> }</b></p><p><b> 5、查詢景點(diǎn)信息</b></p><p> void s
41、earch() </p><p><b> {</b></p><p><b> int num;</b></p><p><b> int i;</b></p><p><b> char c;</b></p><p>
42、 char name[20];</p><p><b> do</b></p><p><b> {</b></p><p> system("cls");</p><p> c=SearchMenu();</p><p> switch (c)
43、</p><p><b> {</b></p><p> case '1': </p><p> system("cls");</p><p> narrate();</p><p> printf("\n\n\t\t請(qǐng)輸入您要查找的景點(diǎn)編號(hào)
44、:");</p><p> scanf("%d",&num);</p><p> for(i=0;i<NUM;i++)</p><p><b> {</b></p><p> if(num==G.vex[i].number)</p><p>&l
45、t;b> {</b></p><p> printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:");</p><p> printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description);</p><p> printf("\n\t\t\t按任意鍵返回.
46、..");</p><p> getchar();</p><p> getchar();</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p>
47、<p> if(i==NUM)</p><p><b> {</b></p><p> printf("\n\n\t\t\t沒(méi)有找到!");</p><p> printf("\n\n\t\t\t按任意鍵返回...");</p><p> getchar()
48、;</p><p> getchar();</p><p><b> }</b></p><p><b> break;</b></p><p><b> case '2':</b></p><p> narrate();<
49、;/p><p> system("cls");</p><p> printf("\n\n\t\t請(qǐng)輸入您要查找的景點(diǎn)名稱:");</p><p> scanf("%s",name);</p><p> for(i=0;i<NUM;i++)</p><p
50、><b> {</b></p><p> if(!strcmp(name,G.vex[i].sight))</p><p><b> {</b></p><p> printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:");</p><p> printf(&
51、quot;\n\n\t\t\t%-25s\n\n",G.vex[i].description);</p><p> printf("\n\t\t\t按任意鍵返回...");</p><p> getchar();</p><p> getchar();</p><p><b> break;&l
52、t;/b></p><p><b> }</b></p><p><b> }</b></p><p> if(i==NUM)</p><p><b> {</b></p><p> printf("\n\n\t\t\t沒(méi)有找到
53、!");</p><p> printf("\n\n\t\t\t按任意鍵返回...");</p><p> getchar();</p><p> getchar();</p><p><b> }</b></p><p><b> break;&
54、lt;/b></p><p><b> }</b></p><p> }while(c!='t');</p><p><b> }</b></p><p><b> 選擇菜單</b></p><p> char Searc
55、hMenu() </p><p><b> {</b></p><p><b> char c;</b></p><p><b> int flag;</b></p><p><b> do{</b></p><p><
56、;b> flag=1;</b></p><p> system("cls");</p><p> narrate();</p><p> printf("\n\t\t\t┏━━━━━━━━━━━━━━━┑\n");</p><p> printf("\t\t\t┃
57、 ┃\n");</p><p> printf("\t\t\t┃ 1、按照景點(diǎn)編號(hào)查詢 ┃\n");</p><p> printf("\t\t\t┃ 2、按照景點(diǎn)名稱查詢 ┃\n");</p><p> printf(
58、"\t\t\t┃ t、返回 ┃\n");</p><p> printf("\t\t\t┃ ┃\n");</p><p> printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");</p><
59、p> printf("\t\t\t\t請(qǐng)輸入您的選擇:");</p><p> scanf("%c",&c);</p><p> if(c=='1'||c=='2'||c=='t')</p><p><b> flag=0;</b>&l
60、t;/p><p> }while(flag);</p><p><b> return c;</b></p><p><b> }</b></p><p><b> 5、運(yùn)行結(jié)果及分析</b></p><p><b> 系統(tǒng)主界面<
61、/b></p><p><b> 查詢路徑</b></p><p><b> 查詢信息</b></p><p><b> 6、收獲及體會(huì)</b></p><p> 非常高興能和同學(xué)們一起做實(shí)驗(yàn),感謝各位老師以及同學(xué)們對(duì)我的幫助,特別是老師循循善誘的教導(dǎo)和不拘一格的
62、思路給予我無(wú)盡的啟迪;這次數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的每個(gè)實(shí)驗(yàn)細(xì)節(jié)和每個(gè)數(shù)據(jù),都離不開(kāi)老師您的細(xì)心指導(dǎo)。</p><p><b> 7、源代碼</b></p><p> #include "string.h"</p><p> #include "stdio.h"</p><p> #i
63、nclude "malloc.h"</p><p> #include "stdlib.h"</p><p> #define Max 30000</p><p> #define NUM 10</p><p> typedef struct ArcCell</p><p&g
64、t;<b> {</b></p><p><b> int adj; </b></p><p><b> }ArcCell;</b></p><p> typedef struct VertexType</p><p><b> {</b><
65、;/p><p> int number; </p><p> char *sight; </p><p> char *description;</p><p> }VertexType; </p><p> typedef struct</p><p><b> {<
66、/b></p><p> VertexType vex[NUM];</p><p> ArcCell arcs[NUM][NUM];</p><p> int vexnum,arcnum;</p><p> }MGraph; </p><p> MGraph G; </p><p
67、> int P[NUM][NUM]; </p><p> long int D[NUM]; </p><p> int x[9]={0};</p><p> void CreateUDN(int v,int a);</p><p> void narrate(); </p><p> void
68、ShortestPath(int num);</p><p> void output(int sight1,int sight2);</p><p> char Menu(); </p><p> void search(); </p><p> char SearchMenu(); </p><p>
69、 void HaMiTonian(int); </p><p> void NextValue(int); </p><p> void display();</p><p> void main()</p><p><b> {</b></p><p> int v0
70、,v1;</p><p><b> char ck;</b></p><p> CreateUDN(NUM,11);</p><p><b> do</b></p><p><b> { </b></p><p> ck=Menu();<
71、/p><p> switch(ck)</p><p><b> {</b></p><p><b> case '1':</b></p><p> system("cls");</p><p> // narrate();</p
72、><p> printf("\n\n\t\t\t請(qǐng)選擇起點(diǎn)景點(diǎn)(0~9):");</p><p> scanf("%d",&v0);</p><p> printf("\t\t\t請(qǐng)選擇終點(diǎn)景點(diǎn)(0~9):");</p><p> scanf("%d"
73、,&v1);</p><p> ShortestPath(v0); </p><p> output(v0,v1); </p><p> printf("\n\n\t\t\t\t請(qǐng)按任意鍵繼續(xù)...\n");</p><p> getchar();</p><p> getc
74、har();</p><p><b> break;</b></p><p> case '2':search();</p><p><b> break;</b></p><p><b> case '3':</b></p>
75、<p> system("cls");</p><p> //narrate();</p><p><b> x[0]=1; </b></p><p> HaMiTonian(1);</p><p> printf("\n\n\t\t\t\t請(qǐng)按任意鍵繼續(xù)...\n
76、");</p><p> getchar();</p><p> getchar();</p><p><b> break;</b></p><p><b> };</b></p><p> }while(ck!='e');</p&
77、gt;<p><b> }</b></p><p> char Menu() </p><p><b> {</b></p><p><b> char c;</b></p><p><b> int flag;</b></p
78、><p><b> do{</b></p><p><b> flag=1;</b></p><p> system("cls");</p><p> narrate();</p><p> printf("\n\t\t\t┏━━━━━━━
79、━━━━━━━━┑\n");</p><p> printf("\t\t\t┃ ┃\n");</p><p> printf("\t\t\t┃ 1、查詢景點(diǎn)路徑 ┃\n");</p><p> printf("\t\t
80、\t┃ 2、查詢景點(diǎn)信息 ┃\n");</p><p> printf("\t\t\t┃ 3、推薦參觀路線 ┃\n");</p><p> printf("\t\t\t┃ t、退出 ┃\n");</p><p> pr
81、intf("\t\t\t┃ ┃\n");</p><p> printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");</p><p> printf("\t\t\t\t請(qǐng)輸入您的選擇:");</p><p> scanf(&qu
82、ot;%c",&c);</p><p> if(c=='1'||c=='2'||c=='3'||c=='t')</p><p><b> flag=0;</b></p><p> }while(flag);</p><p><b
83、> return c;</b></p><p><b> }</b></p><p> char SearchMenu() </p><p><b> {</b></p><p><b> char c;</b></p><p&g
84、t;<b> int flag;</b></p><p><b> do{</b></p><p><b> flag=1;</b></p><p> system("cls");</p><p> narrate();</p>&l
85、t;p> printf("\n\t\t\t┏━━━━━━━━━━━━━━━┑\n");</p><p> printf("\t\t\t┃ ┃\n");</p><p> printf("\t\t\t┃ 1、按照景點(diǎn)編號(hào)查詢 ┃\n");<
86、/p><p> printf("\t\t\t┃ 2、按照景點(diǎn)名稱查詢 ┃\n");</p><p> printf("\t\t\t┃ t、返回 ┃\n");</p><p> printf("\t\t\t┃
87、 ┃\n");</p><p> printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");</p><p> printf("\t\t\t\t請(qǐng)輸入您的選擇:");</p><p> scanf("%c",&c);</p><p>
88、if(c=='1'||c=='2'||c=='t')</p><p><b> flag=0;</b></p><p> }while(flag);</p><p><b> return c;</b></p><p><b> }&
89、lt;/b></p><p> void search() </p><p><b> {</b></p><p><b> int num;</b></p><p><b> int i;</b></p><p><b> c
90、har c;</b></p><p> char name[20];</p><p><b> do</b></p><p><b> {</b></p><p> system("cls");</p><p> c=SearchMe
91、nu();</p><p> switch (c)</p><p><b> {</b></p><p> case '1': </p><p> system("cls");</p><p> narrate();</p><p&
92、gt; printf("\n\n\t\t請(qǐng)輸入您要查找的景點(diǎn)編號(hào):");</p><p> scanf("%d",&num);</p><p> for(i=0;i<NUM;i++)</p><p><b> {</b></p><p> if(num==G
93、.vex[i].number)</p><p><b> {</b></p><p> printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:");</p><p> printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description);</p>&
94、lt;p> printf("\n\t\t\t按任意鍵返回...");</p><p> getchar();</p><p> getchar();</p><p><b> break;</b></p><p><b> }</b></p><
95、;p><b> }</b></p><p> if(i==NUM)</p><p><b> {</b></p><p> printf("\n\n\t\t\t沒(méi)有找到!");</p><p> printf("\n\n\t\t\t按任意鍵返回...&q
96、uot;);</p><p> getchar();</p><p> getchar();</p><p><b> }</b></p><p><b> break;</b></p><p><b> case '2':</b&g
97、t;</p><p> narrate();</p><p> system("cls");</p><p> printf("\n\n\t\t請(qǐng)輸入您要查找的景點(diǎn)名稱:");</p><p> scanf("%s",name);</p><p>
98、for(i=0;i<NUM;i++)</p><p><b> {</b></p><p> if(!strcmp(name,G.vex[i].sight))</p><p><b> {</b></p><p> printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:&
99、quot;);</p><p> printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description);</p><p> printf("\n\t\t\t按任意鍵返回...");</p><p> getchar();</p><p> getchar();&l
100、t;/p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(i==NUM)</p><p><b> {</b></p>
101、<p> printf("\n\n\t\t\t沒(méi)有找到!");</p><p> printf("\n\n\t\t\t按任意鍵返回...");</p><p> getchar();</p><p> getchar();</p><p><b> }</b>&
102、lt;/p><p><b> break;</b></p><p><b> }</b></p><p> }while(c!='t');</p><p><b> }</b></p><p> void CreateUDN(int
103、 v,int a)</p><p><b> {</b></p><p><b> int i,j;</b></p><p> G.vexnum=v; </p><p> G.arcnum=a;</p><p> for(i=0;i<G.vexnum;++i)
104、 G.vex[i].number=i;</p><p> G.vex[0].sight="東大門(mén)";</p><p> G.vex[0].description="學(xué)校正門(mén)。";</p><p> G.vex[1].sight="氣象樓";</p><p> G.vex[1]
105、.description="校氣象研究樓。";</p><p> G.vex[2].sight="體育館";</p><p> G.vex[2].description="運(yùn)動(dòng),放松心情";</p><p> G.vex[3].sight="大學(xué)生活動(dòng)中心";</p>
106、<p> G.vex[3].description="競(jìng)賽、晚會(huì)舉辦地";</p><p> G.vex[4].sight="圖書(shū)館";</p><p> G.vex[4].description="閱覽,借閱圖書(shū)";</p><p> G.vex[5].sight="濱江樓&
107、quot;;</p><p> G.vex[5].description="學(xué)習(xí),自習(xí)室";</p><p> G.vex[6].sight="綜合樓";</p><p> G.vex[6].description="學(xué)習(xí),辦公室";</p><p> G.vex[7].si
108、ght="老食堂";</p><p> G.vex[7].description="餐飲休閑";</p><p> G.vex[8].sight="新食堂";</p><p> G.vex[8].description="餐飲休閑";</p><p> G
109、.vex[9].sight="文園";</p><p> G.vex[9].description="宿舍,休息";</p><p> for(i=0;i<G.vexnum;++i)</p><p> for(j=0;j<G.vexnum;++j)</p><p> G.arcs[i
110、][j].adj=Max;</p><p> G.arcs[0][1].adj=G.arcs[1][0].adj=2;</p><p> G.arcs[0][2].adj=G.arcs[2][0].adj=1;</p><p> G.arcs[0][3].adj=G.arcs[3][0].adj=7;</p><p> G.arcs[
111、1][4].adj=G.arcs[4][1].adj=8;</p><p> G.arcs[2][4].adj=G.arcs[4][2].adj=9;</p><p> G.arcs[3][5].adj=G.arcs[5][3].adj=5;</p><p> G.arcs[5][7].adj=G.arcs[7][5].adj=2;</p>&l
112、t;p> G.arcs[4][6].adj=G.arcs[6][4].adj=3;</p><p> G.arcs[4][7].adj=G.arcs[7][4].adj=2;</p><p> G.arcs[6][8].adj=G.arcs[8][6].adj=2;</p><p> G.arcs[7][8].adj=G.arcs[8][7].adj=
113、1;</p><p> G.arcs[8][9].adj=G.arcs[9][8].adj=1;</p><p><b> }</b></p><p> void narrate()</p><p><b> {</b></p><p> int i,k=0;<
114、;/p><p> printf("\n\t\t*****************歡迎使用校園導(dǎo)游程序***************\n");</p><p> printf("\n\t\t********************南京信息工程大學(xué)*******************\n");</p><p> printf(
115、"\t__________________________________________________________________\n");</p><p> printf("\t\t景點(diǎn)名稱\t\t|\t景點(diǎn)描述\n");</p><p> printf("\t________________________________|
116、_________________________________\n");</p><p> for(i=0;i<NUM;i++)</p><p><b> {</b></p><p> printf("\t (%2d)%-10s\t\t\t|\t%-25s\n",i,G.vex[i].sight,G
117、.vex[i].description);</p><p><b> k=k+1;</b></p><p><b> }</b></p><p> printf("\t________________________________|_________________________________\n&q
118、uot;);</p><p><b> }</b></p><p> void ShortestPath(int num)</p><p><b> {</b></p><p> int v,w,i,t; </p><p> int final[NUM];</
119、p><p><b> int min;</b></p><p> for(v=0;v<NUM;v++)</p><p><b> {</b></p><p> final[v]=0; </p><p> D[v]=G.arcs[num][v].adj;</p
120、><p> for(w=0;w<NUM;w++)</p><p> P[v][w]=0;</p><p> if(D[v]<30000) </p><p><b> {</b></p><p> P[v][num]=1;</p><p> P[v][v]
121、=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> D[num]=0;</b></p><p> final[num]=1; </p><p> for(i=0;i<NUM
122、;++i) </p><p><b> {</b></p><p> min=Max; </p><p> for(w=0;w<NUM;++w)</p><p> if(!final[w]) </p><p> if(D[w]<min) </p>
123、<p><b> {</b></p><p><b> v=w;</b></p><p><b> min=D[w];</b></p><p><b> }</b></p><p> final[v]=1; </p>
124、<p> for(w=0;w<NUM;++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><
125、p> for(t=0;t<NUM;t++)</p><p> P[w][t]=P[v][t];</p><p> P[w][w]=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> }&
126、lt;/b></p><p> void output(int sight1,int sight2) </p><p><b> {</b></p><p> int a,b,c,d,q=0;</p><p> a=sight2; </p><p> if(a!=sight
127、1) /* 如果景點(diǎn)二不和景點(diǎn)一輸入重合,則進(jìn)行 */ </p><p><b> {</b></p><p> printf("\n\t從%s到%s的最短路徑是",G.vex[sight1].sight,G.vex[sight2].sight);/* 輸出提示信息 */ </p>
128、<p> printf("\t(最短距離為 %dm.)\n\n\t",D[a]); </p><p> printf("\t%s",G.vex[sight1].sight); </p><p> d=sight1; /* 將景點(diǎn)一的編號(hào)賦值給d */ </p>&l
129、t;p> for(c=0;c<NUM;++c)</p><p><b> {</b></p><p> gate:; </p><p> P[a][sight1]=0;</p><p> for(b=0;b<NUM;b++)</p><p><b>
130、; {</b></p><p> if(G.arcs[d][b].adj<30000&&P[a][b]) /* 如果景點(diǎn)一和它的一個(gè)臨界點(diǎn)之間存在路徑且最短路徑 */ </p><p><b> {</b></p><p> printf("-->%s&qu
131、ot;,G.vex[b].sight); /* 輸出此節(jié)點(diǎn)的名稱 */ </p><p> q=q+1; /* 計(jì)數(shù)變量加一,滿8控制輸出時(shí)的換行 */ </p><p> P[a][b]=0;</p><p> d=b; /* 將b作為出發(fā)點(diǎn)進(jìn)行下一次循環(huán)輸出,如此反復(fù)
132、0;*/</p><p> if(q%9==0) printf("\n");</p><p> goto gate;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&
133、gt;</p><p><b> }</b></p><p><b> }</b></p><p> void HaMiTonian(int m) </p><p><b> {</b></p><p> if(m>9) retur
134、n; </p><p> L: NextValue(m); </p><p> if(x[m]==0) </p><p><b> return; </b></p><p> if(m==8&&G.arcs[0][x[9]-1].adj!=30000) </p><p
135、> display(); </p><p><b> else </b></p><p> HaMiTonian(m+1); </p><p> goto L; </p><p><b> }</b></p><p> void NextValu
136、e(int k) </p><p><b> { </b></p><p><b> int j; </b></p><p> l:x[k]=(x[k]+1)%10; </p><p> if(x[k]==0) </p><p><b> ret
137、urn; </b></p><p> if(G.arcs[x[k-1]-1][x[k]-1].adj!=30000) </p><p><b> { </b></p><p> for(j=0;j<k;j++) </p><p> if(x[j]==x[k]) </p>
138、<p><b> goto l; </b></p><p> return; </p><p><b> } </b></p><p><b> else </b></p><p> goto l; </p><
139、p><b> } </b></p><p> void display() </p><p><b> { </b></p><p><b> int i=0;</b></p><p> printf("\n\n\t");</p&
140、gt;<p> for(i=0;i<9;i++) </p><p> printf("%s->",G.vex[x[i]-1].sight); </p><p> printf("出口");</p><p> printf("\n");</p><p&
溫馨提示
- 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ù)僅提供信息存儲(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)游系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu) 校園導(dǎo)游系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---校園導(dǎo)游系統(tǒng)設(shè)計(jì)
- 校園導(dǎo)游咨詢系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---校園交通導(dǎo)游系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--校園導(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)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-- 校園導(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)課程設(shè)計(jì)--校園導(dǎo)游咨詢
- 數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)游咨詢課程設(shè)計(jì)報(bào)告
- 校園導(dǎo)游咨詢系統(tǒng)-中南大學(xué)數(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)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)游的咨詢程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
評(píng)論
0/150
提交評(píng)論