- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构论文最成树
课题:最小生成树问题
任课老师:朱节中
专业:软件工程
年级:2012级
班级:1班
学号:座机电话号码001
姓名:董上琦目录
1.设计题目
2.需求分析
1)运行环境
2)输入的形式和输入值的范围
3)输出的形式描述
4)功能描述
5)测试数据
3.概要设计
1)抽象数据类型定义描述
.2)功能模块设计
3)模块层次调用关系图
4.详细设计。实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法
5.调试分析。包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经验体会
6.用户使用说明。详细列出每一步的操作说明
7. 测试结果
8.附录:程序设计源代码
设计题目
1 .问题描述 在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。
2 . 基本要求 以邻接多重表存储无向带权图,利用克鲁斯卡尔算法或普瑞姆算法求网的最小生成树。
需求分析
1)运行环境 软件在JDK运行,硬件支持windows系统
输入的形式和输入值的范围
自动生成顶点数据在10~20之间;各个顶点之间权值在25~50之间;通过程序改动亦可生成已知顶点权值之间的最小生成树,需将随机生成代码改为
edge edge[] new edge 0,1,16 ,new(0,2,18)...... ;
将已知顶点、权值通过其函数输入再生成其所对应最小生成树。
输出的形式描述 输出随机生成顶点个数以及各个顶点之间权值;然后输出本次生成顶点之间构成的最小生成树。
功能描述
该程序会自动生成介于10~20个数顶点模拟各城市,再随机生成介于25~50之间数值作为权值模拟各个城市间的距离,并同时生成此次顶点、权值相对应的最小生成树,模拟各城市间的最小距离,最小生成树。如有确定城市顶点及其权值,则可改动程序令其不再随机生成顶点权值,在程序中输入如下代码:
edge edge[] new edge 0,1,16 ,new(0,2,18)......
输入数组为edge数组,edge(起点,终点,权值)。通过将随机生成代码改动就可以生成该城市对应权值的最小生成树。
5)测试数据 生成数据之后检验生成顶点数值是否介于10~20之间;检验各顶点间权值大小是否介于25~50间;同时检验其自动生成最小生成树是否正确。
概要设计
1)抽象数据类型定义描述
定义排序类sort,将各个顶点按照其两顶点之间权值大小排序,从大到小排序,用到堆排序算法;
定义带权值的边edge,分别存在start(起点)、end(终点)、value 权值 三个变量;
定义main类,调用sort、edge类与自身函数通过Kruskal函数实现最小生成树。
2)功能模块设计 主函数随机生成10~20个顶点作为城市并同时生成任意两顶点间25~50的权值作为两城市距离;在界面输出随机生成顶点个数及任意两顶点间权值;再调用sort函数对权进行排序,按照权值的大小有小到大排序;排序之后实现Kruskal函数,通过kruskal函数生成最小生成树;最后输出所生成的最小生成树。
3)模块层次调用关系图
详细设计 实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块
写出伪码算法。
定义带权值的边及其三个变量start(起点)、end(终点)、value(权值);定义该属性为下边的根据权值排序、Kruskal实现最小生成树做下铺垫;函数实现如下:
package tree;
public class sort public static void sift edge a[], int root, int limit int i root;
int j i*2+1;//j为i的左孩子
while j limit //沿较小值孩子节点向下筛选 if j limit a[j].getValue a[j + 1].getValue //数组元素比较 j++;//j为左右孩子的较小者 if a[j].getValue a[i].getValue //若父亲节点值较大 edge e a[i];//孩子节点中较小值上移 a[i] a[j]; a[j] e; i j; j i * 2 + 1;//i、j向下一层 else break; //跳出循环 public static void sort edge data[] int length data.length;
for int i length/2-1; i 0; i-- //创建最大堆 sift data, i, length-1 ; for int j length - 1; j 0; j-- //每
您可能关注的文档
- 数据库orac知识点(自己整理的,可能部分有点小问题).doc
- 数据库分章节选复习.doc
- 数据库初级- 部分.doc
- 数据库原理及应学指导书(本科).doc
- 数据库原理及应本知识点与习题.doc
- 数据库原理第三录A上机实验.doc
- 数据库及其应用1-3章.doc
- 数据库基础与应导6.doc
- 数据库基础与应导三考核要求.doc
- 数据库基础及其第四章课后作业.doc
- 2025年安徽工商职业学院单招职业技能测试题库带答案(典型题).docx
- 2025年洛阳科技职业学院单招职业技能测试题库带答案(新).docx
- 2025年荆门职业学院单招职业技能测试题库及答案(易错题).docx
- 2025年宣化科技职业学院单招职业技能测试题库(精练).docx
- 2025年包头职业技术学院单招职业技能测试题库带答案(新).docx
- 2025年江西工商职业技术学院单招职业技能测试题库带答案(精练).docx
- 2025年黑龙江农业经济职业学院单招职业技能测试题库精编.docx
- 2025年山东艺术设计职业学院单招职业技能测试题库带答案(基础题).docx
- 2025年陕西工商职业学院单招职业技能测试题库带答案(突破训练).docx
- 2025年承德护理职业学院单招职业技能测试题库【word】.docx
文档评论(0)