收藏 分销(赏)

数据结构 最短路径.doc

上传人:xrp****65 文档编号:7018740 上传时间:2024-12-25 格式:DOC 页数:2 大小:27.50KB
下载 相关 举报
数据结构 最短路径.doc_第1页
第1页 / 共2页
数据结构 最短路径.doc_第2页
第2页 / 共2页
本文档共2页,全文阅读请下载到手机保存,查看更方便
资源描述
#include <stdio.h> #define number 5 #define infinit 1000 struct Graph { char vexs[number]; int arcs[number][number]; int vexnum; int arcnum; }; struct Graph G; void ShortestPath(Graph G,int p[number][number][number],int d[number][number]) { int v,w,u,i; for(v=0;v<G.vexnum;v++) for (w=0;w<G.vexnum;w++) { d[v][w]=G.arcs[v][w]; for (u=0;u<G.vexnum;u++) p[v][w][u] = 0; if (d[v][w]<infinit) p[v][w][v] = w; } for(u=0;u<G.vexnum;u++) for(v=0;v<G.vexnum;v++) for (w=0;w<G.vexnum;w++) if (d[v][u]+d[u][w]<d[v][w]) { d[v][w]=d[v][u]+d[u][w]; for (i=0;i<G.vexnum;i++) { if (p[v][u][i] != 0) p[v][w][i] = p[v][u][i]; else p[v][w][i] = p[u][w][i]; } }} void Print ( Graph G, int p[number][number][number],int d[number][number] ) { int i,j,k; printf("路径对照\n0--A\n1--B\n2--C\n3--D\n4--E\n"); printf("请输入起始点和终点\n"); scanf("%d,%d",&i,&j); printf("路径由 %c 到 %c 是:\n",G.vexs[i],G.vexs[j]); if ( p[i][j][i] ==0) printf("没有能够到达的路径!\n"); else { k = i; while( k != 0) { if (k != i) printf("-->"); printf("%c",G.vexs[k]); k = p[i][j][k]; } printf("\n"); printf("路径长度为:%d\n",d[i][j]); printf("\n"); }} void main() { int i,j,a,b,w; Graph G; int p[number][number][number]; int d[number][number]; G.vexs[0]='A',G.vexs[1]='B',G.vexs[2]='C',G.vexs[3]='D',G.vexs[4]='E';//暂按5个点输出 for(i = 0;i <number;i++) for(j = 0;j <number;j++) { if(i==j) G.arcs[i][j]=0; else G.arcs[i][j]=infinit; } printf("请输入有实际权值的弧数\n"); scanf("%d",&G.arcnum); for(i = 0;i <G.arcnum;i++) { printf("依次输入弧尾、弧头,权值\n"); scanf("%d %d %d", &a, &b, &w);//a和b代表这条边的两个顶点,w代表两个点的权值 G.arcs[a][b] = w;} G.vexnum=number; printf("--------------------\n"); printf(" A B C D E\n"); for(i=0;i<number;i++) {printf("%c ",G.vexs[i]); for(j=0;j<number;j++) printf("%3d ",G.arcs[i][j]); printf("\n"); } printf("--------------------\n"); ShortestPath(G,p,d); Print(G,p,d); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服