《数据结构》课程设计- -树与二叉树转换的实现.doc

《数据结构》课程设计- -树与二叉树转换的实现.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
河南工程学院《数据结构与算法》课程设计 成果报告 树与二叉树转换的实现 学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1341 专业课程: 《数据结构与算法》 指导教师: 2014 年 12 月 29 日 题 目 树与二叉树转换的实现 考核项目 考核内容 得分 平时考核 (30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力 系统设计 (20分)分析系统的功能模块 编程调试 (20分)实现系统的各个功能模块,并完成调试 回答问题 (15分)回答老师针对课程设计提出的问题 课程设计报告撰写 (10分)严格按照规范要求完成课程设计报告 源代码 (5分)按照规范要求完成课程设计源代码的排版 总 评 成 绩 指导教师评语: 日期: 年 月 日 目 录 TOC \o "1-3" \h \z \u 1 课程设计目标与任务 1 1.1 课程设计目标 1 1.2 课程设计任务 1 2 分析与设计 3 2.1 题目分析 3 2.2 存储结构设计 3 2.3 算法描述 4 2.4 程序流程图 5 2.5 算法实现说明 5 3 程序清单 10 4 测试 13 5 总结 15 参考文献 16 PAGE 19 1 课程设计目标与任务 1.1 课程设计目标 数据结构课程设计是在学完数据结构课程之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力培养科学的软件工作方法学生通过数据结构课程设计各方面得到锻炼: (1)能根据实际问题的具体情况结合数据结构课程中的基本理论和基本算法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法; (2)通过上机实习,验证自己设计的算法的正确性,学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改; (3)培养算法分析能力,分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平; (4)尽可能借助语言环境实现图形显示功能,以便将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来,获得算法的直观感受。 1.2 课程设计任务 实现树与二叉树的转换的实现,以及树的前序,后序的递归,非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。(多种遍历算法只可实现一个) 利用本学期所学的数据结构的有关知识,实现树与二叉树相互转换,设计树与二叉树转换的相关函数库,以便在程序设计中调用,要求: (1)实现树与二叉树的转换; (2)借助语言环境实现图形显示功能,以便将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来; (3)给出若干例程,演示通过调用自己所缩写程序来实现相关问题的求解。 该课程设计通过实现树与二叉树的转换,理解树与二叉树的相互转化关系,掌握树与二叉树的存储结构的异同,加深对二叉树和树的理解。 2 分析与设计 2.1 题目分析 树的初始化函数(双亲法和孩子结点法两种),建树函数,输出树函数,树的前序遍历函数(递归和非递归两种),树的后序遍历函数(递归和非递归两种),树的层次遍历函数,一般树和二叉树的转换函数。 2.2 存储结构设计 分析树和二叉树的存储结构,二叉树的存储结构如图2.1。 图2.1二叉树的存储结构图 树是一种非线性的数据结构,树中的元素之间是一对多的层次关系。常用的有三种存储结构,即双亲表示法、孩子表示法、和孩子兄弟表示法。 事实上,一棵树采用孩子兄弟表示法所建立的存储结构与它所对应的二叉树的二叉链表存储结构是完全相同的,只是两个指针域的名称及解释不同而已,通过图直观的表示了树与二叉树之间的对应关系和相互转换方法。如图2.2。 图2.2 树和二叉树的转换图 2.3 算法描述 一.二叉树创建: 用链表实现创建一个树结点的结构体,从键盘输入数据,存入数组。把下标 为2*i+1 的值存入左孩子,为2*i+2的存入右孩子。 二. 先序遍历二叉树的递归算法: 若二叉树为空,则空操作;否则 (1)访问根结点; (2)先序遍历左子树; (3)先序遍历右子树。 三.后序遍历二叉树的递归算法: 若二叉树为空,则空操作;否则 (1)后序遍历左子树; (2)后序遍历右子树。 (3)访问根结点; 四. 先序非递归算法: BiNode根指针,若 BiNode!= NULL对于

您可能关注的文档

文档评论(0)

***** + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档