欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    图论编程题3参考构成可以使n个城市连接的最小生成树Word文档下载推荐.docx

    • 资源ID:17918411       资源大小:77.17KB        全文页数:13页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图论编程题3参考构成可以使n个城市连接的最小生成树Word文档下载推荐.docx

    1、typedef int VRType; /权值,即边的值typedef char InfoType; /附加信息的类型,后面使用时会定义成一个指针typedef char VertexTypeMAX_VERTEX_NUM; /顶点类型typedef enum DG=1, DN, UDG, UDN GraphKind; /有向图,有向网,无向图,无向网typedef struct ArcCell VRType adj; /VRType 是顶点关系类型。对无权图,用 1 或 0 表示相邻否;对带权图,则为权值类型。 InfoType* info; /该弧关系信息的指针ArcCell, AdjMat

    2、rixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedef struct VertexType vexsMAX_VERTEX_NUM; /顶点向量 AdjMatrix arcs; /邻接矩阵 int vexnum, arcnum; /图的当前顶点数和弧数 GraphKind kind; /图的种类标志MGraph;typedef struct /普里姆算法辅助数组的定义 VertexType adjvex; VRType lowcost;closedgeMAX_VERTEX_NUM;#endif /结束if2.2 程序模块MGraph G; /网 G,唯一的全局变量int

    3、main(int argc, char * argv); /主函数Status LocateVex(MGraph G, VertexType v); /判断城市 v 在网 G 中的位置Status CreateUDN(MGraph &G); /创建网 G 的邻接矩阵void DisplayNet(MGraph G); /以邻接矩阵的形式显示网 Gvoid MiniSpanTree_KRUSKAL(MGraph G); /最小生成树的 Kruskal 算法void MiniSpanTree_PRIM(MGraph G, VertexType u); /最小生成树的 Prim 算法Status M

    4、inimum(closedge closeEdge, int n); /Prim 算法中求下一个城市的函数void DeleteInfo(MGraph & /释放堆内存上动态申请的空间2.3流程图创建用邻接矩阵表示的城市道路网输入城市数G.vexnum、道路数G.arcnum输入城市名G.vexsi输入表示道路的两个城市及道路值G.arcsij.adj返回 OK2.3.1创建邻接矩阵的流程图(N-S图)Prim算法化辅助数组closeEdgefor (i=1; iG.vexnum; +i)求下一个城市k = Minimum(closeEdge, G.vexnum)输出找到的道路标记城市,避免重

    5、复输出总耗费图2.3.2Prim算法流程图(N-S图)三详细设计3.1 数据类型定义为了用邻接矩阵表示图 G ,先是定义二维数组的每一个元素含道路值然后在图的定义中定义一个此二维数组的结构成员。并且在图中还定义一个用来存放城市的一维数组及int 型的城市数级道路数。用二维数组的两个下标表示道路,这两个下标又在一位数组中对应两个城市。这样就建立起了一个城市到城市之间的道路网。3.2 程序主要模块说明:该程序共含5个模块,本人负责其中2个模块构造:3.2.1 初始化图G*LocateVex(MGraph G, VertexType v)* while (strcmp(G.vexsi, v) i+;

    6、 返回 i;* CreateUDN* 输入城市数、道路数; for (i=0;城市数; +i) 输入城市名; for(j=0; j closeEdgei.lowcost) 返回该城市在 G 中的位置四调试分析和测试结果4.1 调试分析4.1.1邻接矩阵初始化本函数的主要功能是对无向网进行邻接矩阵的初始化。构造这种具有n个顶点和e条边的无向网时,关键需要考虑其时间复杂度O(n+e*n),其中对邻接矩阵G.arcs的初始化花费了O(n)的时间。4.1.2 Prim 算法Prim 算法的思路是逐步将城市纳入生成树中,这里面的关键步骤是要找到下一个城市。于是通过讨教别人,写了Status Minimu

    7、m(closedge closeEdge, int n)函数,这样就可以在辅助数组中找到道路值最小的道路的两点城市了。4.2测试结果图4.2.1邻接矩阵初始化运行显示界面图4.2.2Prim算法运行显示界面五总结通过本周的课程设计,我们小组终于圆满完成了课程设计的任务,我也有不少收获。既巩固和加深了对数据结构的理解,认识到数据结构是计算机专业一门重要的专业技术基础课程,还提高了我综合运用本课程所学知识的能力。而且,并不是单纯的看看教材就能解决我们的实际问题,所以还要去查找各种我们所需要的资料,所以这次课程设计也培养了我选用参考书,查阅手册及文献资料的能力。要完成一个课程设计的课题并不是一次就能

    8、编译成功的,中间会出现很多的大问题小问题,改错是个很繁琐的问题。通过这次课程设计培养了我独立思考,深入研究,分析问题,解决问题的能力。在以后的学习过程中我将要注意以下几点:1、认真上好专业实验课,多在实践中锻炼自己。2、写程序的过程要考虑周到,严密。3、在做设计的时候要有信心,有耐心,切勿浮躁。4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。六参考文献1.严蔚敏,吴伟民. 数据结构(C语言版). 清华大学出版社,20072.谭浩强,张基温. C语言程序设计教程(第三版)北京:高

    9、等教育出版社,20063.陈维新,林小茶. C+面向对象程序设计教程. 北京:清华大学出版社,20044.苏仕华等.数据结构课程设计. 北京: 机械工业出版社,2005七致谢感谢梁英老师对我们数据结构课程及其实验的悉心指导,正是因为老师在实验课上的指导,让我能够把书本上的知识化成自己的知识,并运用在编程的过程中。感谢同学在我的设计过程中提出的宝贵意见,如果没有他们的帮助,我在设计过程中出现的一些错误可能无法迅速查出解决,你们的帮助为我节省了宝贵的时间。 衷心感谢!八附录/main#include stdio.hstring.hwindows.h#include TypeDefine.hAdja

    10、cencyMatrix.hInitializeFunction.hMiniSpanTree_KRUSKAL.hMiniSpanTree_PRIM.hDisplayNet.hDeleteInfo.h /全局变量G/主函数/判断城市 v 在网 G 中的位置/创建网 G 的邻接矩阵/以邻接矩阵的形式显示网 G/最小生成树的 Kruskal 算法/最小生成树的 Prim 算法/Prim 算法中求下一个城市的函数/释放堆内存上动态申请的空间int main(int argc, char * argv) CreateGraph(G); DisplayNet(G); MiniSpanTree_KRUSKAL

    11、(G); MiniSpanTree_PRIM(G, G.vexs0); DeleteInfo(G); coutendlG.vexnumG.arcnum; for (i=0; +i) /构造顶点向量 printf(请输入第 %d 个城市名(共 %d 个):, i+1, G.vexnum); cinG.vexsi; +i) /初始化邻接矩阵 for (j=0; G.arcsij.adj = INFINITY; / G.arcsij.info = NULL; 请输入一条道路连接的两个城市名及权值:n for (k=0; kv2w; /输入一条边依附的顶点及权值 i = LocateVex(G, v1

    12、); /确定v1、v2在G中的位置 j = LocateVex(G, v2); G.arcsij.adj = w; /弧的权值 G.arcsji = G.arcsij; /置的对称弧 return OK;/CreateUDN/MiniSpan Tree PRIM.h int i, flag, minTemp = INFINITY;n; if (closeEdgei.lowcost ! minTemp = closeEdgei.lowcost; flag = i; return flag; /用普里姆算法从第 u 个顶点出发构造网 G 的最小生成树 T,输出 T 的各条边。 /记录从顶点集 U

    13、到 V-U 的代价最小的边的辅助数组定义见 int i, j, k, totalCost=0; closedge closeEdge; k = LocateVex(G, u); for (j=0; +j) /辅助数组初始化 if (j != k) strcpy(closeEdgej.adjvex, u); closeEdgej.lowcost = G.arcskj.adj;nn+n;|用Prim算法求最小生成树的各条边依次为:n- closeEdgek.lowcost = 0; /初始,U=u; for (i=1; +i) /选择其余 G.vexnum-1 个顶点 k = Minimum(cl

    14、oseEdge, G.vexnum); /求出 T 的下一个结点:第 k 顶点 /此时 closeEdgek.lowcost = MINcloseEdgevi.lowcost | closeEdgevi.lowcost 0, viV-U coutcloseEdgek.adjvex,G.vexsk /输出生成树的边 totalCost += closeEdgek.lowcost; closeEdgek.lowcost = 0; /第 k 顶点并入 U 集 if (G.arcskj.adj closeEdgej.lowcost) /新顶点并入 U 后重新选择最小边 strcpy(closeEdgej.adjvex, G.vexsk); n|总代价:totalCost+/n/MiniSpanTree


    注意事项

    本文(图论编程题3参考构成可以使n个城市连接的最小生成树Word文档下载推荐.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开