- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构课程设计》报告
题 目 通讯线路的敷设问题
专 业 计算机科学与技术
班 级 1班
学 生 沈美珠
同组人员 徐颖 高鹏 黄浪 利锐昌
题目:
通信线路的敷设问题
题目内容:
若要在下图中的13个城市之间建设通信网络,只需要敷设12条线路即可,边上的数字为两个城市之间建设线路的花费,单位:拾万元。如何以最低的经济代价建设这个通信网,是一个网的最小生成树的问题。
要求:
⑴ 以邻接矩阵方式保存图的数据,并以邻接链表的形式输出图的数据;
⑵ 以边表方式保存图的数据,并以邻接矩阵方式的形式输出图的数据;
⑶ 用Prim算法求网的最小生成树,并以邻接链表的形式显示所求得的最小生成树,然后计算敷设相应的通信网的总造价;
⑷ 用Kruskal算法求网的最小生成树,并以邻接链表的形式显示所求得的最小生成树,然后计算敷设相应的通信网的总造价;
⑸ 整个应用设计成一个菜单,具有上述功能要求和退出系统的基本的功能;
⒈ 本人完成的工作:
第四个问题
完成的工作的内容:
用Prim算法求网的最小生成树,并以邻接链表的形式显示所求得的最小生成树,然后计算敷设相应的通信网的总造价;
⒉ 所采用的数据结构
数据结构的定义
typedef struct MSTEdge
{ int vex1,vex2;//边所依附的两个顶点
Weightype weight;//边的权值
}MSTEdge;//prime算法中每条边的存储结构
typedef struct
{ int adjvex;//边所依附U中的顶点
int lowcost;//该边的权值
}closedge;//存放V-U中顶点到U中顶点权值最小的边
⒊ 所设计的函数(小3号黑体)
MSTEdge *prim_MST(MGraph *p,int u)//从第U个顶点开始构造的图A的最小生成树
{ MSTEdge *TE;//指向最小生成树的边
closedge closedge[MAX_EDGE];//存放V-U中顶点到U中顶点权值最小的边
int j,k,v,min,f=0;
for(j=0;j13;j++)
{closedge[j].adjvex=u;
closedge[j].lowcost=p-arcs[j][u];
}//初始化数组closedge[n]
closedge[u].lowcost=0;//初始时置U={u}
TE=(MSTEdge *)malloc(12*sizeof(MSTEdge));
for(j=0;j12;j++)
{min=INFINITY;
for(v=0;v13;v++)
if(closedge[v].lowcost!=0closedge[v].lowcostmin)
{min=closedge[v].lowcost; k=v;}
TE[j].vex1=closedge[k].adjvex;
TE[j].vex2=k;
TE[j].weight=closedge[k].lowcost;
printf((%d,%d)\n,p-vexlist[TE[j].vex1],p-vexlist[TE[j].vex2]);
f=f+TE[j].weight;
closedge[k].lowcost=0;//将顶点k并入U中
for(v=0;v13;v++)
if(p-arcs[v][k]closedge[v].lowcost)
{closedge[v].lowcost=p-arcs[v][k];
closedge[v].adjvex=k;
}//修改数组closedge[n]得各个元素的值
}
printf(敷设相应的通信网的总造价为:);
printf(%d\n,f);
return(TE);
}//求最小生成树的prime算法
对每个函数必须给出所采用的算法思想和程序框图;(小4号宋体)
算法思想
⑴ 若从顶点v0出发构造,U={v0},TE={};
⑵ 先找权值最小的边(u
文档评论(0)