网站大量收购独家精品文档,联系QQ:2885784924

1514010927王志超说明书.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1514010927王志超说明书

中北大学课程设计说明书学院、系:软件学院专业:软件工程班 级:15140x04学 生 姓 名:王志超学 号:1514010927设 计 题 目:最小生成树问题起迄日期:2016年12月16日~2016年12月29日指导教师:付东来日期: 2016年12月29日1 设计目的《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的:1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;2 任务概述1.程序设计思路;?2.存储结构设计;3.主要算法设计;??4.存储结构定义;程序设计思路:每个城市可以表示成城市网中的顶点,城市间的距离可以用距离网中的边表示,边的权值表示两地间的直接路径,采用Kruskal算法建立最小生成树,历城市生成最小生成树,通过计算得到最小生成树的代价。(1)克鲁斯卡尔算法思想基本描述:为使生成树上边的权值之和最小,显然,其中每一条边的权值应该尽可能地小。克鲁斯卡尔算法的做法就是:先构造一个只含n个顶点的子图SG,然后从权值最小的边开始,若它的添加不使SG中产生回路,则在SG上加上这条边,如此重复,直至加上n-1条边为止。(2)克鲁斯卡尔算法设计:a.设置计数器E,初值为0,记录已选中的边数。将所有边从小到大排序,存于p[?]中。b.从p[?]中选择一条权值最小的边,检查其加入到最小生成树中是否会构成回路,若是,则此边不加入生成树;否则,加入到生成树中,计数器E累加1。??c.从E中删除此最小边,转b继续执行,直到k=n-1,?算法结束d.判断是否构成回路的方法:设置集合S,其中存放已加入到生成树中的边所连接的顶点集合,当一条新的边要加入到生成树中时,检查此边所连接的两个顶点是否都已经在S中,若是,则表示构成回路,否则,若有一个顶点不在S中或者两个顶点都不在S中,则不够成回路。防止不能构成最小生成树的图为避免输入的图构成的不是连通图,设计了judge?(?)?函数来判断输入数据构成的是否为连通图,此函数的主要算法是源于普里姆(PRIM)算法,经过改编,形成了新的函数。3 模块划分1.构成城市信息图模块;2.判断是否为连通图模块;3.判断能否构成回路模块;4.生成邻接矩阵模块;5.求最小生成树模块;6.打印最小生成树模块;4 主要函数说明及其N-S图1.数据类型定义;?2.函数实现代码;3.函数之间的调用关系;结束打印最小生成树权值与最小生成树的代价将最小生成树边集合是否构成回路?初始化求最小生成树是否为连通?图?构造城市信息图开始否是是否否数据类型定义:typedef?struct?node?/*构造一个结构体,两个城市可以看成起点和终点,之间的道路可以看成一个边*/{int?str;?/*起点*/int?end;?/*终点*/int?dis;/*距离*/}node;typedef?struct{??????//邻接矩阵存储图结构int?vexs[MAX_LNT];????//数组用于存储城市数int?adj[max+1][max+1];???//图的邻接矩阵表示int?n,e;??????????//n代表城市数,e代表城市间边数}graph;}函数实现代码:a)?int???main?(??)????????//主程序b)?int???menu?(??)???????//菜单函数c)?void??create?(??)??????//输入城市信息函数d)?void??judge?(??)?????//判断是否能够生成最小生成树函数e)?void??display(??)???????//打印输出f)?void??set?(??)????//初始化pre[],rank[]函数g)?void??find??(??)?????//判断是否构成回路函数h)?void??Union?(??)??//将能构成最小生成树的边添加到一个集合?l)?void??Krushal(??)??????//克鲁斯算法求最小生成树函数之间的调用关系:程序执行从主函数main()开始,首先在运行界面上显示菜单,调用菜单函menu(??),根据switch函数选择调用的函数,其中选择1,调用create()函数,用来创建城市之间距离的图,选择2,调用judge()函数,用来判断输入的图是否能够产生最小生成树,选择3,调用display

文档评论(0)

2017ll + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档