普里姆算法生成最小生成树_毕业设计.doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE   PAGE \* MERGEFORMAT 1 JINGCHU UNIVERSITY OF TECHNOLOGY 《数据结构(C语言描述)》 课程设计 学 院 计算机工程学院 班 级 12级软件技术1班 学 号 2012304040122、120 124、133、121 学生姓名 周鑫、王彬彬、李松平 张圣玮、魏远迎 指导教师 余云霞 2014年 1月3日 目 录  TOC \o 1-3 \h \z \u 1 课程设计介绍 1 1.1 课程设计内容 1 1.2 课程设计要求 1 2 课程设计原理 2 2.1 课设题目粗略分析 2 2.2 原理图介绍 3 2.2.1 功能模块图 3 2.2.2 流程图分析 3 3 数据结构分析 10 3.1 存储结构 10 3.2 算法描述 12 4 调试与分析 22 4.1 调试过程 22 4.2 程序执行过程 22 参考文献 28 附 录 28  第  PAGE \* MERGEFORMAT 30 页 共 29页 1 课程设计介绍 1.1 课程设计内容 编写算法能够建立带权图,并能够用Prim算法求该图的最小生成树。最小生成树能够选择图上的任意一点做根结点。最小生成树输出采用顶点集合和边的集合的形式。 1.2 课程设计要求 可以输入顶点、边数及各路径的权值; 通过建立无向图或有向图能过输出邻接矩阵或邻接表; 可以输出建立的最小生成树; 画出流程图,且函数有必要说明、注释; 课设完成后上交报告及核心代码。 2 课程设计原理 2.1 课设题目粗略分析 根据课设题目要求,拟将整体程序分为两大模块。以下是两个模块的大体分析: 创建网图并确定网图的存储形式,通过对题目要求的具体分析。发现该题的主要操作是路径的输出,因此采用邻接表和邻接矩阵(起点、终点和权值)两种存储结构,方便以后的编程。 2.Prim算法。设置两个新的集合U和T,其中U用于存放带权图G的最小生成树的结点的集合,T用于存放带权图G的最小生成树边的权值的集合。其思想是:令集合U的初值为U{u0}(即假设构造最小生成树时从结点u0开始),集合T?的初值为T={}。从所有结点u属于U和结点v属于V但不属于U的带权边中选出具有最小权值的边(u,v),将结点v加入集合U中,将边(u,v)加入集合T中。如此不断重复,当U=V时,最小生成树便构造完毕。 2.2 原理图介绍 2.2.1 功能模块图 显示菜单进行选择 选择创建(有)无向图及存储方式 有向图邻接矩阵 无向图邻接矩阵 有向图邻接表 无向图邻接表 调用普里姆算法输出最小生成树 结束 开始 图2.1 功能模块图 2.2.2 流程图分析 主函数 开始 显示菜单,选择输入1或2 选择1 选择2 调用createAgraph()函数 结束 选择1 调用CreateGraph()函数 选择2 调用CreateMGraph()函数 调用createALgraph()函数 调用Prim函数,输出最小生成树 图2.2 主函数流程图 2. CreateMGraph()函数 开始 int i,j,k for(i=0;iG-n;i++) scanf(“\n%c”,(G-vexs[i])); for(i=0;iG-n;i++) for(j=0;iG-n;i++) i=j G-edges[i][j]=0; Y N G-edges[i][j]=max; for (k=0;kG-e;k++) scanf(\n%d,%d,%d,i,j,weight); G-edges[i][j]=weight; OutPut(G); prim(G-edges,G-n,G-vexs); 结束 图2.3 CreateMGraph()函数流程图 3.Prim()函数 开始 int i,j,k,lowcost[100],mincost; for(i=1;in;i++) { lowcost[i]=gm[0][i]; closevertex[i]=0; } set[i]=0; i=1; j=1; Y Y lowcost[0]=0; closevertex[0]=0; for(i=1;in;i++) mincost=max; j=1; k=1; jn lowcost[j]mincostlowcos

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2023年03月21日上传了教师资格证

1亿VIP精品文档

相关文档