数据结构课程设计——漳州通讯网架设方案.docVIP

数据结构课程设计——漳州通讯网架设方案.doc

  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文档。上传文档
查看更多
数据结构课程设计——漳州通讯网架设方案

漳州通讯网架设方案 一、问题描述 设计要求:在漳州n个区域之间建设通讯网络,只需要保证连通即可,求最经济的架设方案。存储结构采用多种。求解算法多种。 该题目需要运用最小生成树来解决,运用两种方法求最小生成树,分别是PRIM算法和KUSCAL算法。最小生成树的代价之和最小,所以是一种最经济的架设方案。通讯网架设方案中的元素有: 顶点个数(漳州区域个数) 边数(区域间的道路个数) 权值(两区域间的距离) 二、功能需求 该程序是解决城市间架设网络问题的,采用邻接表和邻接矩阵进行存储。要求完成以下功能: (1)采用不同的存储方式要求输出不同的存储结果 (2)求最小生成树:采用两种不同方法求解最经济的架设方案,输出两区域及其之间的距离(权) (3)查询:输出所有的顶点和边的个数、输出所有顶点、输出所有边。 (4)增加:增加有效的顶点和边,要求增加的边和顶点不得重复存在。 (5)删除:(a)删除若干个有效的顶点:要求删除的顶点必须存在。 (b)删除若干条边:要求删除的边必须存在 (6)修改:修改若干个顶点名,要求修改的顶点必须存在,且修改后的顶点名不能和已有的顶点名重复,且修改名字后要求修改该顶点对应的边 (7)登录:用户要通过输入用户名和密码登录系统 (8)输入输出:通过文件方式存储了需要信息,修改更新等也同步到文件 实现要点 (1)架设方案中采用邻接矩阵和邻接表进行存储,根据用户的需要选择不同的存储方式 (2)采用Prim算法和kruscal求最小生成树(及最经济的架设方案)Prim算法就是先选择根,把它放入一个集合U中,剩余的顶点放在集合v中。然后选择该顶点与v中顶点之间最小的一条边,以此类推,如果到达最后一个则返回上一个顶点。而kruscal算法是先写出所有顶点,选择权值最小的边,然后写出第二小的,以此类推,最终要有个判断是否生成环,不生成则得到kruscal的最小生成树。 (3)用户可以随意增加区域的顶点数和边数 (4)用户可以删除顶点和边 (5)用户可以更新顶点名,对应系统自动更新边 (6)用户可以查询现有的顶点信息和边信息。 四.定义 1.各类函数说明 Void queryInformation();//查询函数,查询各区域各边信息 Void add1(); //插入新区域和新边 Void Delete_Vertex(); //删除区域(顶点) Void Delete_adj(); //删除边 Void Update(); //更新顶点和边信息 2.用邻接矩阵存储: (1)结构体定义 struct MGraph { char vexs[20]; //定义一个顶点数组 int arcs[20][20]; //二维数组存储关系与权值 int vexnum,arcnum; //顶点数和边数 }; (2)创建邻接矩阵 int creatMGraph(MGraph G) { char v1,v2; int i,j,w; cout请输入漳州市区域数(顶点数)和总道路的个数(弧的个数):endl; cinG.vexnumG.arcnum; for(i=0;i!=G.vexnum;i++) { cout输入地区名i+1endl; cinG.vexs[i]; } for(i=0;i!=G.vexnum;++i) { for(j=0;j!=G.vexnum;++j) { G.arcs[i][j]=int_max; } } for(int k=0;kG.arcnum;k++) { cout请输入两区域间的距离(权):endl; cinv1v2w; //输入一条边依附的两点及权值 i=localvex(G,v1); j=localvex(G,v2); G.arcs[i][j]=w; G.arcs[j][i]=w; } cout*******************endl; cout图创建成功endl; cout请根据如下进行操作endl; return G.vexnum; } (3)输出邻接矩阵 void MGraphPrint(MGraph G) //输出邻接矩阵 { int i,j; for(i=0;iG.vexnum;i++)

文档评论(0)

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

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

1亿VIP精品文档

相关文档