- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
prim算法建立n个城市间的最小生成树
数据结构
课程设计报告
设计题目:n个城市连接的最小生成树
专 业 通 信 工 程
班 级 0903 班
学 生 彭 焱
学 号
指导教师
起止时间 2012.2.14~2012. 3.13
2012 年 2 学期
目 录
一.设计题目 - 3 -
【问题描述】 - 3 -
【基本要求】 - 3 -
【实现提示】 - 3 -
二.设计内容 - 3 -
1.分析问题及解决问题 - 3 -
三、基本概念 - 4 -
1、顺序表的基本概念 - 4 -
2、图的邻接矩阵的基本概念 - 4 -
3、最小生成树的基本概念 - 5 -
4.普利姆算法思想 - 6 -
四.概要设计 - 6 -
1、模块作用 - 6 -
2、模块及模块调用关系 - 6 -
(1)“SeqList.h”顺序存储结构存放结点信息 - 7 -
(2).“AdjMGraph.h”邻接矩阵存储结构存放边的信息 - 7 -
(3)本课程设计中最小生成树的生成过程 - 8 -
五.算法描述 - 12 -
1.流程图 - 12 -
六.测试结果及分析 - 14 -
1、测试结果 - 14 -
2、结果分析 - 16 -
3、错误分析 - 16 -
七、心得体会和参考资料 - 17 -
1.心得体会 - 17 -
2.参考资料 - 17 -
附录:源代码 - 17 -
一.设计题目
【问题描述】
给定一个地区的n个城市间的距离网,用Prim算法或Kreskas算法建立最小生成树,并计算得到的最小生成树的代价。
【基本要求】
(1)城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本上的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括那些城市间的道路,并显示得到的最小生成树的代价。
(2)表示城市间距离网的邻接矩阵(要求至少6个城市,10条边)
(3)最小生成树中包括的边及其权值,并显示得到的最小生成树的代价。
【实现提示】
输入城市代号——显示邻接矩阵——执行Prim算法的到最小生成树——输出最小生成树的代价
二.设计内容
1.分析问题及解决问题
按照题目要求需要采用邻接矩阵来存放城市间的距离网,且用Prim算法建立最小生成树并求最小生成树代价。
将图的结点信息存放在一个顺序表中,图的边信息存储在一个二维数组edge[MaxVertices][MaxVertices]中,这样就实现了用邻接矩阵存放城市间的距离网。在Prim算法的函数用两个参数,一个是图G为邻接矩阵存储结构的图;另一个是通过函数得到的最小生成树的结点数据和相应结点的边的权值数据closeVertex.
三、基本概念
1、顺序表的基本概念
当采用C语言描述数据结构时问题时,实现顺序存储结构的方法是使用数组。数组把线性表的数据元素存储在一块连续地址空间的内存单元内,这样,线性表中逻辑上相邻的数据元素在物理存储地址上也相邻,数据元素间的逻辑上的前驱,后继逻辑关系就表现在数据元素的存储单元的物理前后位置关系上。
数组有静态数组和动态数组两种。静态数组存储空间的申请和释放有系统自动完成,动态数组存储空间的申请和释放由用户调用系统函数完成。无论是静态数组还是动态数组,其功能都是向系统申请一块地址连续的有限空间,只是申请的方法不同,顺序表一般采用静态数组方法实现数据元素的存储。
顺序表定义结构体如下:
Typedef struct
{
DataType list[Maxsize];
Int size;
}SeqList;
其中,DataType为数组(即数据元素)的数据类型,Maxsize表示数组的最大元素个数,list表示顺序表的数组名,size表示顺序表中当前存储的数据元素个数,它必须满足size= Maxsize,SeqList是该结构体的名称。
2、图的邻接矩阵的基本概念
由图的定义可知,图的信息包括两部分,图中结点的信息和描述之间关系的边的信息。结点信息的描述问题,是一个简单的表存储结构问题。对于一个有n个节点的图,由于每个结点都可能与其他n-1个结点成为邻接结点,所以边之间关系的描述问题,实际上是一个n*n矩阵的计算机存储表示问题。
在图的邻接矩阵存储结构中,节点信息使用一维数组存储,边的邻接矩阵使用二维数组存储,无向图的邻接矩阵一定是对称矩阵。
当图中结点数目较小且边较多时,采用图的邻接矩阵存储结构效率较高;当图中结点数目较大且边的数目远小于相同结点的完全图的边数时,采用图的邻接表存储结
文档评论(0)