数据结构课程设计教材.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2014—2015学年度第 二 学期 数据结构课程设计实验报告 学院 应用数学学院 专业班级 学号 姓名 手机   指导教师 刘志煌 2014年 12月5日 标题与设计内容 编程实现二叉排序树,包括生成,插入,删除。 编写一个函数,判断自己生成的二叉树是否为二叉排序树。 对二叉排序树进行先根,中根和后根非递归遍历。 每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 分别用二叉排序树和数组去存储一个班(50 人以上)的成员信息(至少包括学号、姓名、成绩 3 项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 对数据测试,分析,总结和改进 实现算法与关键代码 主要结构:包括头文件,结构体数组,实现二叉排序树的各种方法,二叉树与数组查找效率对比方法,以及主方法。 Declarations :C的头文件以及自定义类型 二叉排序树的生成:数组的数据读入二叉树中 二叉排序树的插入 二叉排序树的删除 判断是否为二叉排序树 非递归先序遍历 非递归中序遍历 非递归后序遍历 二叉排序树与数组查找效率的比较 主函数 数据测试与分析 开始界面 二叉排序树的生成 判断是否为一颗二叉排序树 插入一个新的节点 删除操作 非递归前序遍历 非递归中序遍历 非递归后序遍历 二叉排序树与数组查找速率的比较 总结(自己做了哪方面的内容,有何亮点) 二叉排序树的生成,插入,删除。 这是最基础的一部分,在做这部份的时候没有考虑后面的数组数据的读入,直接由用户写入要创建的数据,在做到后面进行程序的调试的时候由于要用到50个元素信息,如果每次都通过用户端打入是很不方便的,于是将代码段整体加入结构体数组,用于存放50个元素信息。同时二叉排序树的的节点值直接从结构体数组中写入。 非递归遍历操作 三种非递归遍历操作:前序,中序,后续。在编写三种遍历的时候,先写了一下递归遍历操作,然后用指针进行非递归的便利操作。 树形输出 二叉排序树的的树形输出,根据左右子树遍历操作得出了树形输出。这里用的树形输出是将列进行排,出来的图不是很好看,然后我试着将树横向输出,然后发现遍历时是从树的最底层数据开始,问题在于运行窗口只能从上往下,最后还是没有得出能横向的算法,只有纵向的树形输出。 二叉排序树与数组查找效率的比较 通过调用了clock();方法,在两种查找方式开始之前分别获取一个时间start,在查找之后获取一个时间end,将两个求差,用时最短的说明时间最短,同时也就是效率最高。 自评(根据自己的情况给自己一个等级/分数,说明理由,包含自己实现了哪一块,哪一块还没有解决。一定要写,不然就会不及格) 自评分: 理由 实现代码块:二叉排序树的生成,插入,删除,树形输出,判断是否为二叉排序树,二叉排序树与数组查询效率的比较都已经实现。 还需改进的地方: 二叉排序数生成的时候由于要求用50个数据,所以要我将开始的由用户端输出直接改成用结构体数组存储50个信息元素,二叉排序树直接从结构体数组中读入信息。这里应该可以结构体数组存数的同时也可以由用户端直接输入。 二叉排序树的树形输出时只是纵向输出横不美观,可以设计成横向。由于遍历是从最底层元素开始而dos窗口只允许从上往下输入所以我没有实现纵向树形输出,只有横向树形输出。 其中有一处运行错误如图: 在进行节点插入的时候直接跳过了姓名的输入,我将主方法中插入代码里的姓名输入和成绩输入各注释掉一次运行后发现注释掉姓名后正常运行,错误处在姓名上,最后还是没有找出具体的错误。 3))程序中所有的代码段都是自己编写的,通过查阅相关书籍和请教同学对程序的功能逐步完善,我一共是花了6天的时间。第一天是用于看了看C++的书,因为已经很长时间没有接触C++了,所以对一些基本的语法已经有点模糊,借了一本C++数据结构设计方面的书大概看了一下。第二天根据课本写了写基本的功能,例如插入生成。接下来就是完善功能不断调试,其中最难的还是C++的基础不太好,对于有些算法的语言实现没有一个大致的概念,要通过查很多东西才能了解到是怎么回事,然后将代码打出来,一个代码段一个代码段的整合起来。中间犯得最大的错就是,最后才将所有的代码段整合起来运行,导致有很多错误,然后又分开独自加主方法去实现调试。总之,这次课程设计又复习了一遍C++最基础东西,以及对数据结构有了更好的认识。

文档评论(0)

美洲行 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档