久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3395|回復: 0
打印 上一主題 下一主題
收起左側

有關數據結構的C++程序-城市交通最短路徑問題

[復制鏈接]
跳轉到指定樓層
樓主
設計一個交通查詢系統,能讓游客查詢從任一城市頂點到另一城市頂點之間的最短路徑或最低花費或最少時間等問題。對于不同查詢要求,可輸入城市間的路程或所需時間或所需費用。
本程序共分三個部分:
(1)建立交通網絡圖的存儲結構;
(2)單源最短路徑;
(3)實現兩個城市頂點之間的最短路徑。


單片機源程序如下:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MVNum  100
  4. #define Maxint 32767
  5. enum  boolean{FALSE,TRUE};
  6. typedef char VertexType;
  7. typedef int  Adjmatrix;
  8. typedef struct {
  9. VertexType vexs[MVNum];
  10. Adjmatrix arcs[MVNum][MVNum];
  11. }MGraph;
  12. int D1[MVNum],P1[MVNum];
  13. int D[MVNum][MVNum],P[MVNum][MVNum];
  14. //文件名CreateMGraph.c
  15. void CreateMGraph(MGraph *G,int n,int e)
  16. {//采用鄰接矩陣表示法構造有向圖G,n,e表示圖的當前頂點數和邊數
  17. int i,j,k,w;
  18. for(i=1;i<=n;i++)
  19. G->vexs[i]=(char)i;
  20. for(i=1;i<=n;i++)
  21.         for(j=1;j<=n;j++)
  22.                 G->arcs[i][j]=Maxint;//初始化鄰接矩陣
  23. printf("輸入%d條邊的i、j及w:\n",e);
  24. for(k=1;k<=e;k++)
  25. {
  26. scanf("%d,%d,%d,",&i,&j,&w);
  27. G->arcs[i][j]=w;
  28. }
  29. printf("有向圖的存儲結構建立完畢\n");
  30. }

  31. //文件dijkstra.c
  32. void Dijkstra(MGraph *G ,int v1,int n)
  33. {
  34. int D2[MVNum],P2[MVNum];
  35. int v,i,w,min;
  36. enum boolean S[MVNum];
  37. for(v=1;v<=n;v++)
  38. {
  39. S[v]=FALSE;
  40. D2[v]=G->arcs[v1][v];
  41. if(D2[v]<Maxint)
  42. P2[v]=v1;
  43. else
  44. P2[v]=0;
  45. }
  46. D2[v1]=0;
  47. S[v1]=TRUE;
  48. for(i=2;i<n;i++)
  49. {
  50. min=Maxint;
  51. for(w=1;w<=n;w++)
  52. if(!S[w]&& D2[w]<min)
  53. {
  54. v=w;
  55. min=D2[w];
  56. }
  57. S[v]=TRUE;
  58. for(w=1;w<=n;w++)
  59. if(!S[w] && (D2[v]+G->arcs[v][w]<D2[w]))
  60. {
  61. D2[w]=D2[v]+G->arcs[v][w];
  62. P2[w]=v;
  63. }
  64. }
  65. printf("路徑長度路徑\n");
  66. for(i=1;i<=n;i++)
  67. {
  68. printf("%5d",D2[i]);
  69. printf("%5d",i);
  70. v=P2[i];
  71. while(v!=0)
  72. {
  73. printf("<-%d",v);
  74. v=P2[v];
  75. }
  76. printf("\n");
  77. }
  78. }

  79. //文件floyd.c
  80. void Floyd(MGraph *G,int n)
  81. {
  82. int i,j,k,w;
  83. for(i=1;i<=n;i++)
  84.    for(j=1;j<=n;j++)
  85.    {
  86. if(G->arcs[i][j]!=Maxint)
  87. P[i][j]=j;
  88. else
  89. P[i][j]=0;
  90. D[i][j]=G->arcs[i][j];
  91.     }
  92. for(k=1;k<=n;k++)
  93. {
  94. for(i=1;i<=n;i++)
  95. for(j=1;j<=n;j++)
  96. {
  97. if(D[i][k]+D[k][j]<D[i][j])
  98. {
  99.    D[i][j]=D[i][k]+D[k][j];
  100.    P[i][j]=P[i][k];
  101. }
  102. }
  103.   }
  104. }
  105. void main()
  106. {
  107. MGraph *G;
  108. int m,n,e,v,w,k;
  109. int xz=1;
  110. G=(MGraph *)malloc(sizeof(MGraph));
  111. printf("輸入圖中頂點個數和邊數n,e:");
  112. scanf("%d,%d",&n,&e);
  113. CreateMGraph(G,n,e);
  114. while(xz!=0)
  115. {
  116. printf("********求城市之間的最短路徑********\n");
  117. printf("====================================\n");
  118. printf("1.求一個城市到所有城市的最短路徑\n");
  119. printf("2.求任意的兩個城市之間的最短路徑\n");
  120. printf("====================================\n");
  121. printf("請選擇: 1、或 2、選擇 0、退出:");
  122. scanf("%d",&xz);
  123. if(xz==2)
  124. {
  125. Floyd(G,n);
  126. printf("輸入源點(或稱起點)和終點:v,w:");
  127. scanf("%d,%d",&v,&w);
  128. k=P[v][w];
  129. if(k==0)
  130.    printf("頂點%d到%d無路徑!\n",v,w);
  131. else
  132.   {
  133.    printf("從頂點%d到%d的最短路徑是:%d!\n",v,w,v);
  134.    while(k!=w)
  135.    {
  136.    printf("->%d",k);
  137.    k=P[k][w];
  138.    }
  139.    printf("->%d",w);
  140.    printf("路徑長度:%d\n",D[v][w]);
  141.    }
  142.   }
  143.   else
  144.      if(xz==1)
  145.      {
  146. printf("求單源路徑,輸入源點v:");
  147. ^^^^^限于篇幅余下內容下載附件^^^^^^
復制代碼

全部資料51hei下載地址:
程序.rar (1.29 KB, 下載次數: 11)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成年网站 | 精品国产一区久久 | 久久久久国产 | 国产在线不卡 | 成人免费视频网站在线观看 | 欧美男人的天堂 | 超碰97在线免费 | 精品视频在线播放 | 天天操夜夜操 | 成人在线不卡 | 中文字幕一区二区三区四区五区 | 一区二区三区视频在线观看 | 精品一区国产 | 国产一区二区在线免费视频 | 男人天堂久久 | 91国内精品久久 | 69性欧美高清影院 | 中文字幕啪啪 | 毛片一级电影 | 色综合视频 | 五月天婷婷狠狠 | 日韩午夜精品 | www.se91 | 亚洲免费大片 | 亚洲精品久久久久久久久久久久久 | 精品国产第一区二区三区 | 久久草视频 | 欧美精品二区三区 | 国产欧美精品一区二区色综合朱莉 | 一区精品在线观看 | 日韩欧美二区 | 操网站| 成人高清在线视频 | 在线免费观看成人 | 国产中文一区二区三区 | 国产精品99久久久久久久久 | 国产精品夜间视频香蕉 | 成人免费视频网站在线观看 | 成人欧美一区二区三区在线播放 | 久久久久久免费观看 | 99热激情 |