- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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++)
您可能关注的文档
最近下载
- 基于PLC的地铁自动售票机电气控制部分的设计.doc VIP
- Unit 4 Helping in the community 词汇句型专项训练(含答案解析)人教PEP版2025英语四年级上册.pdf
- 2025年成人高等教育学士学位英语水平考试(成人英语三级)历年参考题库含答案详解.docx VIP
- 青春期女生生理知识.pptx VIP
- Unit 4 Helping in the community 补全对话与短文专项训练(含答案解析)人教PEP版2025英语四年级上册.docx
- 碎纸屑压块机设计.docx VIP
- 一台触摸屏控制多台plc.pdf VIP
- 中医医案——颈椎病(三).docx VIP
- 《空乘旅游英语视听说》课件——In-flight Meals 飞机餐.pdf VIP
- 婴幼儿反复喘息诊治、管理、预防临床实践循证指南(2025).pptx VIP
原创力文档


文档评论(0)