构建一棵二叉排序树的C程序的设计(毕业论文).docVIP

构建一棵二叉排序树的C程序的设计(毕业论文).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文档。上传文档
查看更多
学号 武汉华夏理工学院 课程设计报告书 课程名称: 数据结构 题 目:构建一棵二叉排序树的C程序的设计 系 名: 信息工程学院 专业班级: 姓 名: 指导教师: 2018 年 6月 27日 课程设计任务书 设计题目:构建一棵二叉排序树的C程序的设计 设计目的 1.巩固和加深课堂所学知识、学会分析研究数据对象的特性及数据的组织方法; 2.选择的合适数据的逻辑结构和存储结构以及相应操作,实现二叉排序树的基本操作; 3.提高程序设计能力、加强查阅、运用资料的能力、算法分析与程序设计素质培养 ; 设计任务 (在规定的时间内完成下列任务) 〔问题描述〕建立一棵二叉排序树 ,并完成插入结点、按值查找结点位置和显示等功能。 〔基本要求〕按二叉树的插入方法, 形成二叉排序树 主模块给出操作菜单,用函数实现不同功能在主函数中调用 〔算法提示〕首先设定二叉树的二叉链表的存储结构:在建立二叉树时将每一个结点按左右子树的规定形成挂到树上; 按二叉排序树的特点进行查找,按中序遍历的方法显示树中结点 ; 具体要完成的任务是: A. 编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。 B. 写出规范的课程设计报告书; 时间安排:6月27日---7月1 日 第一天 布置题目,确定任务、查找相关资料 第二天~第四天 功能分析,编写程序,调试程序、运行系统; 第五天 程序验收、答辩;撰写设计报告。 具体要求 1. 课程设计报告按统一通用格式书写,具体内容如下: ① 设计任务与要求 ② 总体方案与说明 ③ 软件主要模块的流程图 ④ 源程序清单与注释 ⑤ 问题分析与解决方案(包括调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想); ⑥ 小结与体会 附录:① 源程序(必须有简单注释) ② 使用说明 ③ 参考资料 2.每位学生应独立完成各自的任务且每天至少在设计室工作半天; 指 导 教 师 签 名: 2016 年 6月 25日 教研室主任(或责任教师)签名: 2016年 6月 25日 1实验目的与目标 TOC \o 1-3 \h \z \u 一、目的 数据结构课程设计是学习了数据结构课后的一个综合性实践环节,是对课程学习的综合和补充。通过课程设计培养学生运用已学过的理论和技能去分析和解决实际问题的能力、加强学生的实践动手能力和创新能力。 二、目标 1、结合c和数据结构的理论知识,按要求独立设计方案,培养独立分析和解决实际问题的能力。加强学生的实践动手能力和创新能力。 2、学会查阅资料,熟悉常用算法的用途与技巧。 3、认真撰写课程设计报告,培养严谨的作风和科学态度。 2.问题分析 本次程序需要完成如下要求:首先输入任一组数据,使之构造成二叉排序树,并对其作中序遍历,然后输出遍历后的数据序列;其次,该二叉排序树能实现对数据(即二叉排序树的结点)的查找、插入和删除等基本操作。 实现本程序需要 解决以下几个问题: 如何构造二叉排序树。 如何通过中序遍历输出二叉排序树。 如何实现多种查找。 如何实现插入删除等操作。 二叉排序树的定义: 其左子树非空,则左子树上所有结点的值均小于根结点的值。 若其右子树非空,则右子树上所有结点的值大于根结点的值。 其左右子树也分别为二叉排序树。 本问题的关键在于对于二叉排序树的构造。根据上述二叉排序树二叉排序树的生成需要通过插入算法来实现:输入(插入)的第一个数据即为根结点;继续插入,当插入的新结点的关键值小于根结点的值时就作为左孩子,当插入的新结点的关键值大于根结点的值时就作为右孩子;在左右子树中插入方法与整个二叉排序树相同。当二叉排序树建立完成后,要插入新的数据时,要先判断已建立的二叉排序树序列中是否已有当前插入数据。因此,插入算法还要包括对数据的查找判断过程。 本问题的难点在于二叉排序树的删除算法的实现。删除前,首先要进行查找,判断给出的结点是否已存在于二叉排序树之中;在删除时,为了保证删除结点后的二叉树仍为二叉排序树,要考虑各种情况,选择正确的方法。删除操作要分几种情况讨论,在后面有介绍。 3.总体设计 用二叉链表作为二叉排序树的存储结构,其中key为结点关键值,*lchlid、*rchild分别为左右孩子指针。该程序的结构如下图所示: M Main() 先建立一棵二叉排序树,并输出其中序排序后的序列 二叉排序树的查找 二叉排序树的插入 二

文档评论(0)

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

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

1亿VIP精品文档

相关文档