数据结构课程设计报告分解.docx

上传人:b****4 文档编号:11406224 上传时间:2023-05-31 格式:DOCX 页数:17 大小:409.60KB
下载 相关 举报
数据结构课程设计报告分解.docx_第1页
第1页 / 共17页
数据结构课程设计报告分解.docx_第2页
第2页 / 共17页
数据结构课程设计报告分解.docx_第3页
第3页 / 共17页
数据结构课程设计报告分解.docx_第4页
第4页 / 共17页
数据结构课程设计报告分解.docx_第5页
第5页 / 共17页
数据结构课程设计报告分解.docx_第6页
第6页 / 共17页
数据结构课程设计报告分解.docx_第7页
第7页 / 共17页
数据结构课程设计报告分解.docx_第8页
第8页 / 共17页
数据结构课程设计报告分解.docx_第9页
第9页 / 共17页
数据结构课程设计报告分解.docx_第10页
第10页 / 共17页
数据结构课程设计报告分解.docx_第11页
第11页 / 共17页
数据结构课程设计报告分解.docx_第12页
第12页 / 共17页
数据结构课程设计报告分解.docx_第13页
第13页 / 共17页
数据结构课程设计报告分解.docx_第14页
第14页 / 共17页
数据结构课程设计报告分解.docx_第15页
第15页 / 共17页
数据结构课程设计报告分解.docx_第16页
第16页 / 共17页
数据结构课程设计报告分解.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计报告分解.docx

《数据结构课程设计报告分解.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告分解.docx(17页珍藏版)》请在冰点文库上搜索。

数据结构课程设计报告分解.docx

数据结构课程设计报告分解

2014—2015学年度第二学期

数据结构课程设计实验报告

 

学院应用数学学院

专业班级

学号

姓名

手机  

指导教师刘志煌

2014年12月5日

一、标题与设计内容

1.编程实现二叉排序树,包括生成,插入,删除。

2.编写一个函数,判断自己生成的二叉树是否为二叉排序树。

3.对二叉排序树进行先根,中根和后根非递归遍历。

4.每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。

5.分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么?

6.对数据测试,分析,总结和改进

二、实现算法与关键代码

1.主要结构:

包括头文件,结构体数组,实现二叉排序树的各种方法,二叉树与数组查找效率对比方法,以及主方法。

2.Declarations:

C的头文件以及自定义类型

3.二叉排序树的生成:

数组的数据读入二叉树中

4.二叉排序树的插入

5.二叉排序树的删除

6.判断是否为二叉排序树

7.非递归先序遍历

8.非递归中序遍历

9.非递归后序遍历

10.二叉排序树与数组查找效率的比较

 

11.主函数

三、数据测试与分析

1.开始界面

2.二叉排序树的生成

3.判断是否为一颗二叉排序树

4.插入一个新的节点

5.删除操作

6.非递归前序遍历

7.非递归中序遍历

8.非递归后序遍历

9.二叉排序树与数组查找速率的比较

四、总结(自己做了哪方面的内容,有何亮点)

1.二叉排序树的生成,插入,删除。

这是最基础的一部分,在做这部份的时候没有考虑后面的数组数据的读入,直接由用户写入要创建的数据,在做到后面进行程序的调试的时候由于要用到50个元素信息,如果每次都通过用户端打入是很不方便的,于是将代码段整体加入结构体数组,用于存放50个元素信息。

同时二叉排序树的的节点值直接从结构体数组中写入。

2.非递归遍历操作

三种非递归遍历操作:

前序,中序,后续。

在编写三种遍历的时候,先写了一下递归遍历操作,然后用指针进行非递归的便利操作。

3.树形输出

二叉排序树的的树形输出,根据左右子树遍历操作得出了树形输出。

这里用的树形输出是将列进行排,出来的图不是很好看,然后我试着将树横向输出,然后发现遍历时是从树的最底层数据开始,问题在于运行窗口只能从上往下,最后还是没有得出能横向的算法,只有纵向的树形输出。

4.二叉排序树与数组查找效率的比较

通过调用了clock();方法,在两种查找方式开始之前分别获取一个时间start,在查找之后获取一个时间end,将两个求差,用时最短的说明时间最短,同时也就是效率最高。

五、自评(根据自己的情况给自己一个等级/分数,说明理由,包含自己实现了哪一块,哪一块还没有解决。

一定要写,不然就会不及格)

1.自评分:

2.理由

1)实现代码块:

二叉排序树的生成,插入,删除,树形输出,判断是否为二叉排序树,二叉排序树与数组查询效率的比较都已经实现。

2)还需改进的地方:

A.二叉排序数生成的时候由于要求用50个数据,所以要我将开始的由用户端输出直接改成用结构体数组存储50个信息元素,二叉排序树直接从结构体数组中读入信息。

这里应该可以结构体数组存数的同时也可以由用户端直接输入。

B.二叉排序树的树形输出时只是纵向输出横不美观,可以设计成横向。

由于遍历是从最底层元素开始而dos窗口只允许从上往下输入所以我没有实现纵向树形输出,只有横向树形输出。

C.其中有一处运行错误如图:

在进行节点插入的时候直接跳过了姓名的输入,我将主方法中插入代码里的姓名输入和成绩输入各注释掉一次运行后发现注释掉姓名后正常运行,错误处在姓名上,最后还是没有找出具体的错误。

3))程序中所有的代码段都是自己编写的,通过查阅相关书籍和请教同学对程序的功能逐步完善,我一共是花了6天的时间。

第一天是用于看了看C++的书,因为已经很长时间没有接触C++了,所以对一些基本的语法已经有点模糊,借了一本C++数据结构设计方面的书大概看了一下。

第二天根据课本写了写基本的功能,例如插入生成。

接下来就是完善功能不断调试,其中最难的还是C++的基础不太好,对于有些算法的语言实现没有一个大致的概念,要通过查很多东西才能了解到是怎么回事,然后将代码打出来,一个代码段一个代码段的整合起来。

中间犯得最大的错就是,最后才将所有的代码段整合起来运行,导致有很多错误,然后又分开独自加主方法去实现调试。

总之,这次课程设计又复习了一遍C++最基础东西,以及对数据结构有了更好的认识。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2