数据结构程序_求有向图的最短路径.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验课题 有向图的路径问 计师1113012034 曹承 2012.12.5 问题描述:对于有向图G=(V,E),任意Vi,Vj属于V(Vi与Vj不等),判断从定点Vi到顶点Vj是否存在路径。 源程序实现: /*求有向图的最短路径*/ #includestdio.h #define n 5 #define e 7 typedef int vextype; typedef int adjtype; typedef struct { vextype vexs[n]; adjtype arcs[n][n]; }graph; graph *ga; /*建立*/ creatgraph() { int i,j,k,w; printf(Please input:\n); for(i=0;in;i++) scanf(%d,ga-vexs[i]); for(i=0;in;i++) for(j=0;jn;j++) ga-arcs[i][j]=1000; printf(Please input:\n); for(k=0;ke;k++) { scanf(%d%d%d,i,j,w); ga-arcs[i-1][j-1]=w; } printf(The result is:\n); for(i=0;in;i++) { for(j=0;jn;j++) printf(%d\t,ga-arcs[i][j]); printf(\n); } } /*求最短路径*/ DIJKSTRA() { int P[n],S[n],D[n]; int i,j,k,vl=0,pre; int min,max=1000,inf=8000; for(i=0;in;i++) { D[i]=ga-arcs[vl][i]; if(D[i]!=max) P[i]=1; else P[i]=0; } for(i=0;in;i++) S[i]=0; S[vl]=1; D[vl]=0; for(i=0;in-1;i++) { min=inf; for(j=0;jn;j++) if((!S[j])(D[j]min)) { min=D[j]; k=j; } S[k]=1; for(j=0;jn;j++) if((!S[j]D[j]D[k]+ga-arcs[k][j])) { D[j]=D[k]+ga-arcs[k][j]; P[j]=k+1; } } printf(length lujing\n); for(i=0;in;i++) { printf(%d\t%d,D[i],i+1); pre=P[i]; while(pre!=0) { printf(--%d,pre); pre=P[pre-1]; } printf(\n); } } /*主函数*/ void main() { creatgraph(); printf(Dijkstra:\n); DIJKSTRA(); getch(); } 运行结果为:

文档评论(0)

yan666888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档