數(shù)據(jù)結(jié)構(gòu)_校園導(dǎo)游系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論