2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩14頁(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ì)——校園導(dǎo)游咨詢系統(tǒng)</p><p><b>  1:需求分析:</b></p><p>  (1)任務(wù):編制一個(gè)為來(lái)訪客人進(jìn)行最短路徑導(dǎo)游的程序</p><p>  (2)要求:從學(xué)校的平面上選取n個(gè)有代表性的景點(diǎn),根據(jù)用戶指定的起點(diǎn)和終點(diǎn)輸出相應(yīng)路徑。</p><p><b

2、>  2:概要設(shè)計(jì):</b></p><p>  (1) 1)a) AdjMGraph.h圖操作的函數(shù)所放的頭文件</p><p>  b) AdjMGraphCreate.h圖的創(chuàng)建函數(shù)所放的頭文件</p><p>  c) Dijkstra.h狄克斯特拉函數(shù)設(shè)計(jì)所放的頭文件</p><p>  d) SeqList.h存

3、放順序表的頭文件</p><p>  2)SchoolGuide.c文件包括以下三個(gè)函數(shù)</p><p>  void SgPrint(AdjMGraph g,int n,int distance[],int path[],int j)函數(shù),其功能是將源點(diǎn)到各個(gè)結(jié)點(diǎn)的最短距離和最短路徑的結(jié)果輸出;</p><p>  void Sgblueprint()函數(shù),其功能

4、是將校園平面圖輸出;</p><p>  void main(void)函數(shù),主函數(shù),功能是調(diào)用測(cè)試數(shù)據(jù)值,顯示主菜單,根據(jù)用戶輸入的i進(jìn)行不同功能操作,隨后根據(jù)用戶輸入的ch值進(jìn)行不同功能操作。</p><p>  (2)該程序所使用的存儲(chǔ)結(jié)構(gòu)是順序存儲(chǔ);</p><p><b>  (3)流程圖:</b></p><p&

5、gt;<b>  3</b></p><p>  1 2 </p><p><b>  T</b></p><p><b>  F</b></p><p>  圖1-1主函數(shù)main()

6、流程圖</p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N </b>

7、</p><p><b>  Y </b></p><p>  Y N</p><p>  圖1-2 SgPrint函數(shù)流程圖</p><p><b>  3:詳細(xì)設(shè)計(jì):</b></p><p>  (1)/*順序表頭文件SeqLis

8、t.h*/</p><p>  typedef struct</p><p><b>  {</b></p><p>  DataType list[MaxSize];</p><p><b>  int size;</b></p><p><b>  }SeqLi

9、st;</b></p><p>  void ListInitiate(SeqList *L) /*初始化順序表L*/</p><p><b>  {</b></p><p>  L->size=0; /*定義初始化數(shù)據(jù)元素個(gè)數(shù)*/</p><p><b>  }</b><

10、;/p><p>  int ListLength(SeqList L) /*返回順序表L的當(dāng)前數(shù)據(jù)元素個(gè)數(shù)*/</p><p><b>  {</b></p><p>  return L.size;</p><p><b>  }</b></p><p>  int ListI

11、nsert(SeqList *L,int i,DataType x)</p><p>  /*在順序表L的第i(0≤i≤size)個(gè)位置前插入數(shù)據(jù)元素值x*/</p><p>  /*插入成功返回1,插入失敗返回0*/</p><p><b>  {int j;</b></p><p>  if(L->size&g

12、t;=MaxSize)</p><p><b>  {</b></p><p>  printf("順序表已滿無(wú)法插入!\n");</p><p>  return 0;}</p><p>  else if(i<0||i>L->size)</p><p>&

13、lt;b>  {</b></p><p>  printf("參數(shù)i不合法!\n");</p><p>  return 0;}</p><p><b>  else{</b></p><p>  /*為插入做準(zhǔn)備*/</p><p>  for(j=L-&g

14、t;size;j>i;j--)</p><p>  L->list[j]=L->list[j-1];</p><p>  L->list[i]=x;/*插入x*/</p><p>  L->size++;/*元素個(gè)數(shù)加1*/</p><p>  return 1;}</p><p><

15、;b>  }</b></p><p>  int ListDelete(SeqList *L,int i,DataType *x)</p><p><b>  {</b></p><p>  /*刪除順序表L中位置為i(0≤i≤size-1)的數(shù)據(jù)元素并存放到x中*/</p><p>  /*刪除成功返

16、回1,刪除失敗返回0*/</p><p><b>  int j;</b></p><p>  if(L->size<=0)</p><p><b>  {</b></p><p>  printf("順序表已空無(wú)數(shù)據(jù)元素可刪!\n");</p><

17、;p>  return 0;}</p><p>  else if(i<0||i>L->size-1)</p><p><b>  {</b></p><p>  printf("參數(shù)i不合法");</p><p>  return 0;}</p><p&g

18、t;<b>  else</b></p><p><b>  {</b></p><p>  *x=L->list[i]; /*保存刪除的元素到x中*/</p><p><b>  /*依次前移*/</b></p><p>  for(j=i+1;j<=L->

19、size-1;j++)</p><p>  L->list[j-1]=L->list[j];</p><p>  L->size--;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p><b

20、>  }</b></p><p>  int ListGet(SeqList L,int i,DataType *x)</p><p>  /*取順序表L中第i個(gè)數(shù)據(jù)元素存于x中,成功返回1.失敗返回0*/</p><p><b>  {</b></p><p>  if(i<0||i>L.

21、size-1)</p><p><b>  {</b></p><p>  printf("參數(shù)i不合法!\n");</p><p>  return 0;}</p><p><b>  else</b></p><p>  {*x=L.list[i];&

22、lt;/p><p>  return 1;}</p><p><b>  }</b></p><p>  (2)/* AdjMGraph.h圖操作的函數(shù)所放的頭文件*/</p><p>  #include"Seqlist.h"/*包含順序表頭文件*/</p><p>  type

23、def struct</p><p><b>  {</b></p><p>  SeqList Vertices;/*存放結(jié)點(diǎn)的順序表*/</p><p>  int edge[MaxVertices][MaxVertices];/*存放邊的鄰接矩陣*/</p><p>  int numOfEdges;/*邊的條數(shù)*

24、/</p><p>  }AdjMGraph;/*圖的結(jié)構(gòu)體定義*/</p><p>  void Initiate(AdjMGraph *G,int n)/*初始化*/</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p&

25、gt;  for(i=0;i<n;i++)</p><p>  for(j=0;j<n;j++)</p><p><b>  {</b></p><p>  if(i==j) G->edge[i][j]=0;</p><p>  else G->edge[i][j]=MaxWeight;<

26、/p><p><b>  }</b></p><p>  G->numOfEdges=0;/*邊的條數(shù)置為0*/</p><p>  ListInitiate(&G->Vertices);/*順序表初始化*/</p><p><b>  }</b></p><p&

27、gt;  void InsertVertex(AdjMGraph *G,DataType vertex)</p><p>  /*在圖G中插入結(jié)點(diǎn)vertex*/</p><p><b>  {</b></p><p>  ListInsert(&G->Vertices,G->Vertices.size,vertex);&l

28、t;/p><p>  /*順序表尾插入*/</p><p><b>  }</b></p><p>  void InsertEdge(AdjMGraph *G,int v1,int v2,int weight)</p><p>  /*在圖G中插入邊<v1,v2>,邊<v1,v2>的權(quán)為weight

29、*/</p><p><b>  {</b></p><p>  if(v1<0||v1>G->Vertices.size||v2<0||v2>G->Vertices.size)</p><p><b>  {</b></p><p>  printf("

30、;參數(shù)v1或v2越界出錯(cuò)!\n");</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  G->edge[v1][v2]=weight;</p><p>  G->numOfEdges++;</p>&

31、lt;p><b>  }</b></p><p>  void DeleteEdge(AdjMGraph *G,int v1,int v2)</p><p>  /*在圖G中刪除邊<v1,v2>*/</p><p><b>  {</b></p><p>  if(v1<0|

32、|v1>G->Vertices.size||v2<0||v2>G->Vertices.size)</p><p><b>  {</b></p><p>  printf("參數(shù)v1或v2越界出錯(cuò)!\n");</p><p><b>  exit(1);</b></p

33、><p><b>  }</b></p><p>  G->edge[v1][v2]=MaxWeight;</p><p>  G->numOfEdges--;</p><p><b>  }</b></p><p>  void DeleteVerten(AdjMG

34、raph *G,int v)</p><p><b>  /*刪除結(jié)點(diǎn)V*/</b></p><p><b>  {</b></p><p>  int n=ListLength(G->Vertices),i,j;</p><p>  DataType x;</p><p&

35、gt;  for(i=0;i<n;i++)/*計(jì)算刪除后的邊數(shù)*/</p><p>  for(j=0;j<n;j++)</p><p>  if((i==v||j==v)&&G->edge[i][j]>0&&G->edge[i][j]<MaxWeight)</p><p>  G->numO

36、fEdges--;/*計(jì)算被刪除邊*/</p><p>  for(i=v;i<n;i++) /*刪除第v行*/</p><p>  for(j=0;j<n;j++)</p><p>  G->edge[i][j]=G->edge[i+1][j];</p><p>  for(i=0;i<n;i++) /*刪

37、除第v列*/</p><p>  for(j=v;j<n;j++)</p><p>  G->edge[i][j]=G->edge[i][j+1];</p><p>  ListDelete(&G->Vertices,v,&x);/*刪除結(jié)點(diǎn)v*/</p><p><b>  }</b&

38、gt;</p><p>  int GetFirstVex(AdjMGraph G,int v)</p><p>  /*在圖G中尋找序號(hào)為v的結(jié)點(diǎn)的第一個(gè)鄰接結(jié)點(diǎn)*/</p><p>  /*如果這樣的鄰接結(jié)點(diǎn)存在,返回該鄰接結(jié)點(diǎn)的序號(hào);否則,返回-1*/</p><p><b>  {</b></p>

39、<p><b>  int col;</b></p><p>  if(v<0||v>G.Vertices.size)</p><p><b>  {</b></p><p>  printf("參數(shù)v越界出錯(cuò)\n");</p><p><b> 

40、 exit(1);</b></p><p><b>  }</b></p><p>  for(col=0;col<G.Vertices.size;col++)</p><p>  if(G.edge[v][col]>0&&G.edge[v][col]<MaxWeight)return col;&l

41、t;/p><p>  return -1;</p><p><b>  }</b></p><p>  int GetNextVex(AdjMGraph G,int v1,int v2)</p><p>  /*在圖G中尋找v1結(jié)點(diǎn)的鄰接結(jié)點(diǎn)v2的下一個(gè)鄰接結(jié)點(diǎn)*/</p><p>  /*如果這樣的

42、鄰接結(jié)點(diǎn)存在,返回該鄰接結(jié)點(diǎn)的序號(hào);否則,返回-1*/</p><p>  /*v1和v2都是相應(yīng)結(jié)點(diǎn)的序號(hào)*/</p><p><b>  {</b></p><p><b>  int col;</b></p><p>  if(v1<0||v1>G.Vertices.size||v

43、2<0||v2>G.Vertices.size)</p><p><b>  {</b></p><p>  printf("參數(shù)v1或v2越界出錯(cuò)!\n");</p><p><b>  exit(1);</b></p><p><b>  }</b

44、></p><p>  for(col=v2+1;col<G.Vertices.size;col++)</p><p>  if(G.edge[v1][col]>0&&G.edge[v1][col]<MaxWeight) return col;</p><p>  return -1;</p><p>

45、<b>  }</b></p><p>  (3)/* AdjMGraphCreate.h圖的創(chuàng)建函數(shù)所放的頭文件*/</p><p>  typedef struct</p><p><b>  {</b></p><p>  int row;/*行下標(biāo)*/</p><p>

46、;  int col;/*列下標(biāo)*/</p><p>  int weight;/*權(quán)值*/</p><p>  }RowColWeight;/*邊信息結(jié)構(gòu)體定義*/</p><p>  void CreatGraph(AdjMGraph *G,DataType V[],int n,RowColWeight E[],int e)</p><p&g

47、t;  /*在圖G中插入n個(gè)結(jié)點(diǎn)信息V和e條邊信息E*/</p><p><b>  {</b></p><p><b>  int i,k;</b></p><p>  Initiate(G,n);/*結(jié)點(diǎn)順序表初始化*/</p><p>  for(i=0;i<n;i++)</p&g

48、t;<p>  InsertVertex(G,V[i]);/*結(jié)點(diǎn)插入*/</p><p>  for(k=0;k<e;k++)</p><p>  InsertEdge(G,E[k].row,E[k].col,E[k].weight);/*邊插入*/</p><p><b>  }</b></p><p

49、>  (4)/* Dijkstra.h狄克斯特拉函數(shù)設(shè)計(jì)所放的頭文件*/</p><p>  void Dijkstra(AdjMGraph G,int v0,int distance[],int path[])</p><p>  /*帶權(quán)圖G從下標(biāo)v0結(jié)點(diǎn)到其他結(jié)點(diǎn)的最短距離distance*/</p><p>  /*和最短路徑下標(biāo)path*/</

50、p><p><b>  {</b></p><p>  int n=G.Vertices.size;</p><p>  int *s=(int *)malloc(sizeof(int)*n);</p><p>  int minDis,i,j,u;</p><p><b>  /*初始化*

51、/</b></p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  distance[i]=G.edge[v0][i];</p><p><b>  s[i]=0;</b></p><p>  if(

52、i!=v0&&distance[i]<MaxWeight) path[i]=v0;</p><p>  else path[i]=-1;</p><p><b>  }</b></p><p>  s[v0]=1;/*標(biāo)記結(jié)點(diǎn)v0已從集合T加入到集合S中*/</p><p>  /*在當(dāng)前還未到最短

53、路徑的結(jié)點(diǎn)集中選取具有最短距離的結(jié)點(diǎn)u*/</p><p>  for(i=1;i<n;i++)</p><p><b>  {</b></p><p>  minDis=MaxWeight;</p><p>  for(j=0;j<n;j++)</p><p>  if(s[j]==

54、0&&distance[j]<minDis)</p><p><b>  {</b></p><p><b>  u=j;</b></p><p>  minDis=distance[j];</p><p><b>  }</b></p>&

55、lt;p>  /*當(dāng)已不再存在最短路徑時(shí)算法結(jié)束;此語(yǔ)句對(duì)非連通圖是必須的*/</p><p>  if(minDis==MaxWeight)return;</p><p>  s[u]=1;/*標(biāo)記結(jié)點(diǎn)u已從集合T加入到集合S中*/</p><p>  /*修改從v0到其他結(jié)點(diǎn)的最短距離和最短路徑*/</p><p>  for(j=

56、0;j<n;j++)</p><p>  if(s[j]==0&&G.edge[u][j]<MaxWeight&&distance[u]+G.edge[u][j]<distance[j])</p><p><b>  {</b></p><p>  /*結(jié)點(diǎn)v0經(jīng)結(jié)點(diǎn)u到其他結(jié)點(diǎn)的最短距離和最短

57、路徑*/</p><p>  distance[j]=distance[u]+G.edge[u][j];</p><p>  path[j]=u;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

58、/b></p><p>  (5)/* SchoolGuide.c文件*/</p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<malloc.h></p><p>  typed

59、ef char DataType;</p><p>  #define MaxSize 100</p><p>  #define MaxVertices 10</p><p>  #define MaxWeight 10000</p><p>  #include"AdjMGraph.h"</p><

60、p>  #include"AdjMGraphCreate.h"</p><p>  #include"Dijkstra.h"</p><p>  void SgPrint(AdjMGraph g,int n,int distance[],int path[],int j)</p><p>  { /*輸出源點(diǎn)到其他各結(jié)

61、點(diǎn)的最短距離和最短路徑*/</p><p><b>  int i;</b></p><p>  /*從源結(jié)點(diǎn)到其他各結(jié)點(diǎn)的最短路徑及其距離分別為:*/</p><p>  printf("從該結(jié)點(diǎn)%c到其他各結(jié)點(diǎn)的最短路徑及其距離分別為:\n",g.Vertices.list[j]);</p><p&g

62、t;  printf("\n");//輸出換行符</p><p>  for(i=0;i<n;i++)</p><p>  { /*從源結(jié)點(diǎn)到當(dāng)前結(jié)點(diǎn)的最短路徑為*/</p><p>  printf("從結(jié)點(diǎn)%c到結(jié)點(diǎn)%c的最短路徑為:",g.Vertices.list[j],g.Vertices.list[i])

63、;</p><p>  printf("(");//輸出左括號(hào)</p><p>  if(path[i]!=-1)//源點(diǎn)到其他結(jié)點(diǎn)的最短路徑的前一結(jié)點(diǎn)判斷</p><p>  { if(path[path[i]]!=-1)//該前一結(jié)點(diǎn)的前一結(jié)點(diǎn)進(jìn)行判斷</p><p><b>  {</b>&l

64、t;/p><p>  if(path[path[path[i]]]!=-1)//該前一結(jié)點(diǎn)的前一結(jié)點(diǎn)的前一結(jié)點(diǎn)進(jìn)行判斷</p><p><b>  {</b></p><p>  printf("%c,",g.Vertices.list[path[path[path[i]]]]);//輸出相應(yīng)存在的前一結(jié)點(diǎn)</p>

65、<p><b>  }</b></p><p>  printf("%c,",g.Vertices.list[path[path[i]]]);//輸出應(yīng)存在的前一結(jié)點(diǎn)</p><p><b>  }</b></p><p>  printf("%c,",g.Vertice

66、s.list[path[i]]);//輸出應(yīng)存在的前一結(jié)點(diǎn)</p><p><b>  }</b></p><p>  printf("%c",g.Vertices.list[i]);//輸出當(dāng)前結(jié)點(diǎn)</p><p>  printf(")");//輸出換行符右括號(hào)</p><p>

67、;  printf(",其最短距離為%d;\n",distance[i]);//輸出源點(diǎn)到其他結(jié)點(diǎn)的最短距離</p><p>  printf("\n");//輸出換行符</p><p><b>  }</b></p><p><b>  }</b></p><p

68、>  void Sgblueprint()</p><p>  {/*顯示校園平面圖*/</p><p>  printf(" ——————校園平面圖—————— \n");</p><p>  printf(" B(學(xué)生宿舍)—

69、——————————————————E(商業(yè)街)\n");</p><p>  printf(" / \\ / | \n");</p><p>  printf(" / \\

70、 / | \n");</p><p>  printf(" / \\(B到D) / | \n");</p><p>  printf(" /

71、 \\ / | \n");</p><p>  printf(" / \\ / | \n");</p><p>  printf(&q

72、uot;A(校門口) ———————————————————D(學(xué)校食堂和 | \n");</p><p>  printf("| 學(xué)校田徑場(chǎng)(學(xué)校田徑場(chǎng)在學(xué)校食堂后面)) \\ | \n");</p><p>  printf("|

73、 \\(D到F) | \n");</p><p>  printf("| \\ | \n");</p><p>  printf("C(第一、

74、第二教學(xué)樓和校辦) —————————————— —————F(第三教學(xué)樓和實(shí)驗(yàn)樓)\n");</p><p><b>  }</b></p><p>  void main(void)</p><p><b>  {</b></p><p>  AdjMGraph g;</p>

75、;<p>  char a[]={'A','B','C','D','E','F'};</p><p>  RowColWeight rcw[]={{0,2,5},{0,3,30},{1,0,2},{1,4,8},{2,1,15},{2,5,7},{4,3,4},{5,3,10},{5,4,18}};<

76、;/p><p>  int i,j,n=6,e=9;//i為控制控制菜單項(xiàng)的數(shù)值,j為選取源點(diǎn)的數(shù)值</p><p><b>  char ch;</b></p><p>  int distance[6],path[6];</p><p>  printf(" 校園導(dǎo)游咨詢系統(tǒng)------您

77、身邊的導(dǎo)游 \n");</p><p>  printf("\n");</p><p>  printf("\n");</p><p>  printf("\n");</p><p><b>  /*菜單選項(xiàng)*/</b></p>&l

78、t;p>  printf(" 1:請(qǐng)求校園導(dǎo)游幫組(即咨詢校園各景點(diǎn)最短路徑)\n");</p><p>  printf(" 2:顯示校園平面圖\n");</p><p>  printf(" 3:退出校園導(dǎo)游咨詢系統(tǒng)\n");</p><

79、;p>  printf("請(qǐng)輸入你所想進(jìn)行的功能選項(xiàng):\n");</p><p>  scanf("%d",&i); //輸入控制控制菜單項(xiàng)的數(shù)值i的值</p><p>  CreatGraph(&g,a,n,rcw,e);//創(chuàng)建圖</p><p>  switch(i){ //選擇菜單項(xiàng)的操作<

80、/p><p>  case 1:system("cls");</p><p>  /*調(diào)用輸出校園平面圖函數(shù)并輸出校園平面圖*/</p><p>  Sgblueprint();</p><p>  /*提示用戶輸入起點(diǎn)的序列號(hào)*/</p><p>  printf("請(qǐng)輸入你所在地或起點(diǎn)的序

81、列號(hào)(A-F的序列號(hào)為依次0,1,2,3,4,5):\n");</p><p>  scanf("%d",&j);//用戶輸入起點(diǎn)的序列號(hào)i的值</p><p>  /*調(diào)用狄克斯特拉函數(shù)計(jì)算源點(diǎn)的其他各結(jié)點(diǎn)的最短路徑及其距離*/</p><p>  Dijkstra(g,j,distance,path);</p>

82、<p>  /*提示用戶參照校園平面圖以了解各景點(diǎn)的代號(hào)的含義*/</p><p>  printf("提示:下列A、B、C等均是各景點(diǎn)的代號(hào),如有問(wèn)題,請(qǐng)參考上面的校園平面圖\n");</p><p>  /*調(diào)用輸出源點(diǎn)到其他各結(jié)點(diǎn)的最短距離和最短路徑函數(shù)并輸出相應(yīng)的最短路徑和最短距離*/</p><p>  SgPrint(g,

83、n,distance,path,j);</p><p><b>  break;</b></p><p>  case 2:system("cls");</p><p>  Sgblueprint();//調(diào)用輸出校園平面圖函數(shù)并輸出校園平面圖</p><p><b>  break;<

84、;/b></p><p>  case 3:exit(1);break;//退出程序</p><p><b>  }</b></p><p>  while(3)//判斷程序是否繼續(xù)運(yùn)行</p><p><b>  {</b></p><p>  printf(&quo

85、t;\n您是否還想進(jìn)行其他操作(y/n):\n");//提示用戶是否還需繼續(xù)進(jìn)行其他操作</p><p>  scanf("%s",&ch);//用戶輸入y/n以選擇是否仍需進(jìn)行其他操作</p><p>  if(ch=='Y'||ch=='y')//判斷用戶所輸入的ch值是否為y/Y,以判斷用戶是否進(jìn)行其他操作<

86、/p><p><b>  {</b></p><p>  system("cls");</p><p>  printf(" 校園導(dǎo)游咨詢系統(tǒng)------您身邊的導(dǎo)游 \n");</p><p>  printf("\n");</p&

87、gt;<p>  printf("\n");</p><p>  printf("\n");</p><p><b>  /*菜單選項(xiàng)*/</b></p><p>  printf(" 1:請(qǐng)求校園導(dǎo)游幫組(即咨詢校園各景點(diǎn)最短路徑)\n");<

88、;/p><p>  printf(" 2:顯示校園平面圖\n");</p><p>  printf(" 3:退出校園導(dǎo)游咨詢系統(tǒng)\n");</p><p>  printf("請(qǐng)輸入你所想進(jìn)行的功能選項(xiàng):\n");</p><p>  sca

89、nf("%d",&i);</p><p>  switch(i){ //選擇菜單項(xiàng)的操作</p><p>  case 1:system("cls");</p><p>  /*調(diào)用輸出校園平面圖函數(shù)并輸出校園平面圖*/</p><p>  Sgblueprint();</p>&

90、lt;p>  /*提示用戶輸入起點(diǎn)的序列號(hào)*/</p><p>  printf("請(qǐng)輸入你所在地或起點(diǎn)的序列號(hào)(A-F的序列號(hào)為依次0,1,2,3,4,5):\n");</p><p>  scanf("%d",&j);//用戶輸入起點(diǎn)的序列號(hào)i的值</p><p>  /*調(diào)用狄克斯特拉函數(shù)計(jì)算源點(diǎn)的其他各結(jié)

91、點(diǎn)的最短路徑及其距離*/</p><p>  Dijkstra(g,j,distance,path);</p><p>  /*提示用戶參照校園平面圖以了解各景點(diǎn)的代號(hào)的含義*/</p><p>  printf("提示:下列A、B、C等均是各景點(diǎn)的代號(hào),如有問(wèn)題,請(qǐng)參考上面的校園平面圖\n");</p><p>  /*

92、調(diào)用輸出源點(diǎn)到其他各結(jié)點(diǎn)的最短距離和最短路徑函數(shù)并輸出相應(yīng)的最短路徑和最短距離*/</p><p>  SgPrint(g,n,distance,path,j);</p><p><b>  break;</b></p><p>  case 2:system("cls");</p><p>  Sg

93、blueprint();//調(diào)用輸出校園平面圖函數(shù)并輸出校園平面圖</p><p><b>  break;</b></p><p>  case 3:exit(1);break;//退出程序</p><p><b>  }</b></p><p><b>  }</b><

94、;/p><p>  else return;//退出程序</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4:調(diào)試分析:</b></p><p>  (1)a)測(cè)試數(shù)據(jù):char a[]={'

95、;A','B','C','D','E','F'};</p><p>  RowColWeight rcw[]={{0,2,5},{0,3,30},{1,0,2},{1,4,8},{2,1,15},{2,5,7},{4,3,4},{5,3,10},{5,4,18}};</p><p>  int n=6,

96、e=9;</p><p><b>  b)測(cè)試結(jié)果:</b></p><p>  (2)所遇到的問(wèn)題:</p><p>  1)SgPrint函數(shù)中的形參如何設(shè)置,通過(guò)仔細(xì)分析圖的操作等頭文件和主函數(shù),最終分析函數(shù)SgPrint中應(yīng)加入形參AdjMGraph g,int n,int distance[],int path[],int j;<

97、;/p><p>  2)Sgblueprint函數(shù)中輸出語(yǔ)句中想輸出’\’,直接鍵入’\’發(fā)現(xiàn)不能輸出’\’,最終查看消息窗口的提示信息和聯(lián)系C語(yǔ)言中有關(guān)轉(zhuǎn)義字符的相關(guān)知識(shí),知道了如果相輸出轉(zhuǎn)義字符’\’本身就必須書寫成’\\這樣的格式;</p><p>  3)在進(jìn)行菜單項(xiàng)操作時(shí),如何做到清除原有屏幕的操作,通過(guò)上網(wǎng)查資料了解到,只需加入“system(“cls”);”該語(yǔ)句即可;</

98、p><p>  4)SgPrint函數(shù)中如何實(shí)現(xiàn)輸出如“從結(jié)點(diǎn)A到結(jié)點(diǎn)B的最短路徑為:(A,C,B),其最短距離為20;”格式,通過(guò)分析Dijkstra.h和主函數(shù),最終想到只需添加“</p><p>  if(path[i]!=-1)</p><p>  { if(path[path[i]]!=-1)</p><p><b>  {

99、</b></p><p>  if(path[path[path[i]]]!=-1)</p><p><b>  {</b></p><p>  printf("%c,",g.Vertices.list[path[path[path[i]]]]);</p><p><b>  }

100、</b></p><p>  printf("%c,",g.Vertices.list[path[path[i]]]);</p><p><b>  }</b></p><p>  printf("%c,",g.Vertices.list[path[i]]);</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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論