学号20182335 2019-2020-1 《数据结构与面向对象程序设计》实验八报告

课程:《程序设计与数据结构》
班级: 1823
姓名: 李金泉
学号:20182335
实验教师:王志强
实验日期:2019年11月4日
必修/选修: 必修

1.实验内容

1.参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder),用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试。

2.基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和先序ABDHIEJMNCFGKL,构造出附图中的树,用JUnit或自己编写驱动类对自己实现的功能进行测试。

3.自己设计并实现一颗决策树并完成测试。

4.输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果

2. 实验过程及结果

实验8(1)

实验8(2)

实验8(3)

实验8(4)

3. 实验过程中遇到的问题和解决过程

问题1:为什么为实现某一个功能,一般都写两个方法:Public、Private方法,然后我们用就调用这个pubic方法?

问题1解决方案:经过查资料知道这样做主要有两个好处:
一. 从代码上看,以上面的实验二方法为例、两者的传入数据虽然相同,都是两个数组。但是他们的返回值不同,也就是说:有返回值的方法,使用该方法时能够得到一些类型的数据再来利用。
二. 从整体上看,这是一种保护机制,不让自己这个类以外的方法去随便使用这个类的数据,可以保护他的数据,只能通过调用自己类的方法去操纵这些数据。这样会很安全

问题2:在完成决策树时,一开始没有仔细学习,没理解那些数字的含义,仅仅是看了几段比较有代表性的决策树代码后就想上手操作,对于决策的执行过程完全找不到方向

问题2解决方案:
在进行几次低效率的实验来判断选择结果之后,我意识到自己走到了歧路上,于是重新看了看决策树代码的含义,才发现那些数字就是代表选择结果构造树,然后按照左下到右下,从下往上的规律排列来达到决策的目的,修改代码后终于实现了决策树

其他(感悟、思考等)

本次实验主要的是排序和查找的算法的一些设计,帮助我们复习了之前的内容. 我对实验的过程还是不够了解和掌握,尤其是调试的过程中有很多步骤不知道它的具体意思,需要向同学请教和学习。以后会继续努力弄懂每个步骤。

参考资料

《Java程序设计与数据结构教程(第二版)》

《Java程序设计与数据结构教程(第二版)》学习指导

posted @ 2019-11-17 23:09  李金泉  阅读(140)  评论(0编辑  收藏  举报