实验7 图的作及应用.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文档。上传文档
查看更多
实验7 图的作及应用

仲恺农业工程学院实验报告纸 计算机科学与技术(院、系) 计算机科学与技术 专业092班 组 课 学号 实验日期 教师评定 实验7 图的操作及应用 1.实验目的: 通过求最短路径的算法的实现加深对图的定义、结构特点以及最短路径的概念和意义。 2.实验预备知识: ⑴ 图的定义和基本术语; ⑵ 图的四种存储结构(数组表示法、邻接表、十字链表和邻接多重表); ⑶ 图的两种遍历策略(深度优先搜索和广度优先搜索),并应该注意图的遍历和树的遍历算法之间的区别; ⑷ 图的连通性、连通分量和最小生成树的概念和实现方法; ⑸ 拓扑排序和关键路径、两类求最短路径问题的解法。 迪杰斯特拉算法 #include dos.h #include conio.h #include stdio.h #include stdlib.h #include string.h #define INFINITY 30000 //定义一个权值的最大值 #define MAX_VERTEX_NUM 20 //图的最大顶点数 enum BOOL {False,True}; typedef struct {int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵 int vexnum,arcnum; //图的当前顶点和边数 }Graph; void CreateGraph(Graph ); //生成图的邻接矩阵 void ShortestPath_DiJ(Graph,int,int[][MAX_VERTEX_NUM],int[]); //用迪杰斯特拉算法求从某一源点到其余顶点的最短路径 void Print_ShortestPath(Graph,int,int[][MAX_VERTEX_NUM],int[]); //显示最短路径 void main() {Graph G; //采用邻接矩阵结构的图 char j=y; int u; int P[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //存放从源点到各顶点的最短路径 int D[MAX_VERTEX_NUM]; //存放从源点到各顶点的最短路径的距离 //------------------程序解说---------------------------- printf(本程序将演示利用迪杰斯特拉算法求\n从图的一点到其余顶点的最短路径.\n); printf(首先输入图的顶点数和弧数.\n格式:顶点数,弧数;例如:5,7\n); printf(然后输入各弧和权值.\n格式:弧尾,弧头,权值;例如:\n1,2,10\n1,3,18\n2,4,5\n3,2,5\n4,3,2\n4,5,2\n5,3,2\n); printf(再输入从哪个顶点出发,例如:1\n); printf(程序将会找出从到其余顶点的最短路径.\n); printf(10 1-2\n17 1-2-4-3\n15 1-2-4\n17 1-2-4-5\n); //------------------------------------------------------ while(j!=Nj!=n) {CreateGraph(G); //生成邻接矩阵结构的图 printf(从哪个顶点出发:); scanf(%d,u); //输入迪杰斯特拉算法中的起始顶点 ShortestPath_DiJ(G,u,P,D); //利用迪杰斯特拉算法求最短路径 Print_ShortestPath(G,u,P,D); //显示最短路径 printf(最短路径演示完毕,继续进行吗?(Y/N)); scanf( %c,j); } } void CreateGraph(Graph G) {//构造邻接矩阵结构的图G int i,j; int start,end,weight; printf(请输入图的顶点数和弧数(顶点数,弧数):); scanf(%d,%d,G.vexnum,G.arcnum); //输入图的顶点数和边数 for(i=1;i=G.vexnum;i++) for(j=1;j=G.vexnum;j++) G.arcs[i][j]=INFINITY; //初始化

文档评论(0)

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

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

1亿VIP精品文档

相关文档