求最短路径_c语言程序

求最短路径_c语言程序

ID:11312563

大小:293.50 KB

页数:10页

时间:2018-07-11

求最短路径_c语言程序_第1页
求最短路径_c语言程序_第2页
求最短路径_c语言程序_第3页
求最短路径_c语言程序_第4页
求最短路径_c语言程序_第5页
资源描述:

《求最短路径_c语言程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、中国地质大学(武汉)数据结构课程设计报告指导老师:朱晓莲班级序号:学号:姓名:实习二求最短路径一.问题描述试设计一个算法,求图中一个源点到其他各顶点的最短路径。二.基本要求(1)用邻接表表示图;(2)按长度非递减次序打印输出最短路径的长度及相应路径。三.测试数据四.用到的数据结构和函数(1)定义数组typedefcharVertexType;typedefintAdjmatrix;typedefstruct{VertexTypevexs[MVNum];//顶点数组,类型假定为char型Adjmatrixarcs[MVNum]

2、[MVNum];//邻接矩阵,类型假定为int型}MGraph;(2)迪杰斯特拉算法voidDijkstra(MGraph*G,intv1,intn){//用迪杰斯特拉算法求有向图G的v1顶点到其他顶点v的最短路径P[v]和其权D[v]//设G是有向图的邻接矩阵,若边不存在,则G[i][j]=Maxint//S[v]为真当且仅当v在S中intD2[MVNum],P2[MVNum];intv,i,w,min;enumbooleanS[MVNum];for(v=1;v<=n;v++){//初始化S和DS[v]=FALS

3、E;//设置最短路径终点集D2[v]=G->arcs[v1][v];//设置初始的最短路径值if(D2[v]

4、;}S[v]=TURE;for(w=1;w<=n;w++)//更新当前最短路径及距离if(!S[w]&&(D2[v]+G->arcs[v][w]arcs[v][w];P2[w]=v;}}printf("路径长度路径");for(i=1;i<=n;i++){printf("%5d",D2[i]);printf("%5d",i);v=P2[i];while(v!=0){printf("<-%d",v);v=P2[v];}printf("");}

5、}(3)费洛伊德算法voidFloyd(MGraph*G,intn){inti,j,k,v,w;for(i=1;i<=n;i++)//设置路径长度D和路径path初值for(j=1;j<=n;j++){if(G->arcs[i][j]!=Maxint)P[i][j]=j;//j是i的后继elseP[i][j]=0;D[i][j]=G->arcs[i][j];}for(k=1;k<=n;k++){//做k次迭代,每次均试图将顶点k扩充到当前求得的从i到j的最短路径P[i][j]上for(i=1;i<=n;i++)for(j=1

6、;j<=n;j++){if(D[i][k]+D[k][j]

7、ntAdjmatrix;typedefstruct{VertexTypevexs[MVNum];//顶点数组,类型假定为char型Adjmatrixarcs[MVNum][MVNum];//邻接矩阵,类型假定为int型}MGraph;intD1[MVNum],P1[MVNum];intD[MVNum][MVNum],P[MVNum][MVNum];/*建立有向图的存储结构*/voidCreateMGraph(MGraph*G,intn,inte){//采用邻接矩阵表示法构造有向图G,n和e表示图的顶点数和边数inti,j,k

8、,w;for(i=1;i<=n;i++)G->vexs[i]=(char)i;for(i=1;i<=n;i++)for(j=1;j<=n;j++)G->arcs[i][j]=Maxint;//初始化邻接矩阵printf("输入%d条边的i,j及w:",e);for(k=1;k<=e;k

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。