数据结构课程设计:两顶点之间最短路径
来源:互联网 发布:网络销售授权协议书 编辑:程序博客网 时间:2024/06/06 15:36
问题描述:数据结构上机实验报告题5:
设计并实现一个交通资讯系统。能够让旅客咨询从任何一个城市顶点到另一个城市顶点之间的最短路径问题。
要求:能够输出旅客所走路径
作者:何知令
设计并实现一个交通资讯系统。能够让旅客咨询从任何一个城市顶点到另一个城市顶点之间的最短路径问题。
要求:能够输出旅客所走路径
作者:何知令
完成时间:2016年6月25日
解题思想:
使用弗洛伊德算法依次遍历图中每个顶点,考量将其加入到图中任意两个顶点之间是否会使该两个顶点之间的路径(当前)剪短,若是,则在path[i][j]中记录下该顶点。依次迭代就可以得到图中任意两顶点之间的最短路径
难点:难点在于怎样理解该算法只在两顶点之间插如一个顶点但实现了长路径的求解,以及用于存储路径顶点和往前递归寻找路径顶点的过程
代码:
/*问题描述:数据结构上机实验报告题5:设计并实现一个交通资讯系统。能够让旅客咨询从任何一个城市顶点到另一个城市顶点之间的最短路径问题。要求:能够输出旅客所走路径作者:何知令完成时间:2016年6月25日*/#include <stdio.h>#define INF 32767 //INF表示∞int a,b;//起点和终点int path[7][7];//用于存放路径int A[7][7]=//每个城市到另一个城市的路径,-1表示该城市到另一城市没有直接路径或者到自身 { {0,4,6,6,INF,INF,INF}, {4,0,1,INF,7,INF,INF}, {6,1,0,2,6,4,INF}, {6,INF,2,0,INF,5,INF}, {INF,7,6,INF,0,1,6}, {INF,INF,4,5,1,0,8}, {INF,INF,INF,INF,6,8,0} };void Ppath(int i,int j) //前向递归查找路径上的顶点{ int k; k=path[i][j]; if (k==-1) return; //找到了起点则返回 Ppath(i,k); //找顶点i的前一个顶点k printf("%d,",k); Ppath(k,j); //找顶点k的前一个顶点j}void Floyd(){ int i,j,k; for (i=0; i<7; i++) for (j=0; j<7; j++) path[i][j]=-1; for (k=0; k<7; k++) { for (i=0; i<7; i++) for (j=0; j<7; j++) if (A[i][j]>A[i][k]+A[k][j]) { A[i][j]=A[i][k]+A[k][j]; path[i][j]=k; } }}int main(){ int i,j; printf("下为一个城市的交通图(领接矩阵形式):\n"); for(i=0; i<7; i++) { for(j=0; j<7; j++) { if(A[i][j]==INF) printf("\tINF\t"); else printf("\t%d\t",A[i][j]); if(j==6) printf("\n"); } } printf("请输入起点和终点:\n"); scanf("%d %d",&a,&b); Floyd(); printf("从城市%d到城市%d的路径长度:%d 路径为:",a,b,A[a][b]); printf("%d,",a); //输出路径上的起点 Ppath(a,b); //输出路径上的中间点 printf("%d\n",b); //输出路径上的终点 return 0;}程序运行结果展示:
知识点总结:弗洛伊德算法及图的邻接矩阵
学习心得:开始怎么读都读不懂,后来还是老老实实在纸上写写,仔细想了想迭代的过程和具体实现长路径距离的寻找过程,才明白这个算法是怎么回事
阅读全文
0 0
- 数据结构课程设计:两顶点之间最短路径
- 数据结构例程——每对顶点之间的最短路径
- 每对顶点之间的最短路径-Floyd
- 所有顶点对之间的最短路径
- 每一对顶点之间的最短路径
- 所有顶点之间的最短路径算法:Floyd算法。
- spark primer 计算每个每个顶点之间最短路径
- 每对顶点之间的最短路径
- Floyd算法验证-每队顶点之间的最短路径
- 项目4 -- 每对顶点之间的最短路径
- 第十三周--每对顶点之间的最短路径
- 每队顶点之间的最短路径(弗洛伊德算法)
- 每一对顶点之间的最短路径【Floyd】
- 顶点对之间的最短路径---Floyd
- 实现教科书图7.33的程序(另加孤立顶点台北)(两城市之间的最短路径模拟)
- 数据结构例程——从一个顶点到其余各顶点的最短路径
- 第十三周--数据结构-从一个顶点到其余各顶点的最短路径
- 【数据结构】最短路径
- 在BroadcastReceiver中利用推送设置全局弹窗,并将消息保存至本地
- 23种设计模式-模板方法模式
- FFmpeg函数简单分析:av_find_decoder()和av_find_encoder()
- Qt连接MySQL提示“QSqlDatabase: QMYSQL driver not loaded”的解决办法
- 开篇
- 数据结构课程设计:两顶点之间最短路径
- VS2012,2013,Opencv生成DLL
- iOS开发小结
- RDD:基于内存的集群计算容错抽象
- 关于Android Studio中点9图的编译错误问题:Some file crunching failed
- 首次创业者必须知道哪些基本常识?
- Unity Shader入门精要学习笔记
- cron表达式详解
- nginx 简介