20172322 2017-2018-2 《程序设计与数据结构》第十周学习总结
20172322 2017-2018-2 《程序设计与数据结构》第十周学习总结
教材学习内容总结
- 集合也是一种对象,类似于保存其他对象的存储库。
- 动态链式结构
- 它很好的解决了数组的长度无法变动的问题,使得无需在对象更多的情况下创建新的数组。
- 它的效率相较于数组较高。
- 它的大小在使用时动态确定,而不是声明时静态确定。
- 单链结构最后一个节点为
null
,双向链第一个和最后一个节点都为null
- 线性数据结构
- 队列:先进先出。
- 堆栈:先进后出。
教材学习中的问题和解决过程
- 问题1:最初对于链表的的理解有些混乱,它的实现是基于什么?指针究竟是如何指向的?
- 问题1解决方案:向王志强老师询问了相关问题,王老师为我解答了这些问题。next指向链表的下一个对象,而这个对象中可以存在很多种类型的对象。类似于PP13.1中,DVDList中的next它指向一个DVD对象,而DVD对象中又存在
String
类型的"title""director"也有int
型的"year"double
型的"cost"和boolean
型的"bluray",这类似于数组的处理方法,一个对象中存在多种对象。 - 问题2:队列也是一种线性数据结构,它与堆栈类似,只是他用代码又如何实现呢?
- 问题2解决方案:上百度搜索了相关知识,并且找到了文章《java队列实现(顺序队列、链式队列、循环队列)》了解了三种队列的代码实现。
- 问题3:树和图作为非线性数据结构的代表,它们的相同点和不同点是什么?
- 问题3解决方案:
- 不同点:图没有类似于树根节点那样的初始入口点。
- 相同点:均可利用数组和动态链实现。
- 问题4:书上并没有关于非线性数据结构树和图的详细解释及代码实现方案,这使得我这个求知欲望比较强的人没有感到满足。
- 问题4解决方案:在百度上查阅相关资料,找到了《树 及 Java 实现》和《数据结构--图 的JAVA实现(上)》来满足自己的求知欲望。
代码调试中的问题和解决过程
- 问题1:在看书上例子MagazineList.java时总是感觉到有些别扭,MagazineNode的存在意义是什么?
- 问题1解决方案:询问王志强老师,老师解释说,MagazineNode它可以并在Magazine类中,类似于以下代码:
public Magazine magazine
public Magazine next;
public Magazine(Magazine mag)
{
magazine = mag;
next = null;
}
从以上代码可以看出MagazineNode的存在只是书上例子为了我们的理解,但是好像适得其反。
- 问题2:在做PP13.3时,不知道如何实现相关的要求,最初也没有理解“以整形术作为节点的链表”
- 问题2解决方案:询问了结对伙伴范雯琪同学,并且借鉴了她的部分代码,在相应位置加上了自己理解的注释。看懂了她的代码实现方式,感觉到自己本周状态不是很好。
- 问题3:在做PP13.3的main函数时,还是照着书上例子MagazineRack来写
rack.add(new int(1))
。 - 问题3解决方案:作为int型的数,它并不需要new一个int来加入。
感觉自己这周像个智障 - 问题4:在做PP13.1时,最初的输出总是null而且找不到问题,如图。
- 问题4解决方案:范雯琪同学帮我看了看代码,发现问题是在两个参数的位置放反了
,调整一下之后就没有问题了。
之后自己也想通了这个问题,应该是dv的值赋给dvd。
代码托管
上周考试错题总结
- 侥幸本周没有错题。
结对及互评
- 博客中值得学习的或问题:
- 优点:许多老师课上所讲的只是她都在博客中予以复现,使得今后的复习中更加方便的回忆起老师在课上所讲的内容。
- 不足:在上周我本来是看到她想实现目录功能才去自己的博客实现的,结果她到现在还是没有目录功能...
- 代码中值得学习的或问题:
- 优点:在经过上周的建议过后她将代码分在了不同的文件夹中,这让查看代码的人更加方便的查看代码,她对我的建议的及时采纳值得我的学习。
- 不足:近期的代码中不存在或者比较少的存在自己的注释,虽然自己在当时编程时能理解自己的编程方式,但是别人或者自己时间久了以后或许就不是很理解了,我觉得可以在部分重要行中加入自己的注释。
点评过的同学博客和代码
- 本周结对学习情况
-
结对学习内容
- 范雯琪同学在我做PP13.1时为我提供列莫大的帮助,在给我讲解了相关问题的同时也并没有让我自己利用她的成果,而是让我再看一遍代码并且加上自己的注释。我觉得有这样的结对伙伴真是太棒了!
其他
- 感悟:本周的实验内容虽然很快就完成了,但是书上的学习却是浑浑噩噩。需要调整一下自己状态。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 242/242 | 1/4 | 13/13 | 增加了对Java的兴趣 |
第二周 | 297/539 | 1/5 | 15/28 | 发现目标并没有想象中那么难 |
第三周 | 315/854 | 2/7 | 18/46 | 突然发觉JAVA的难度不小 |
第四周 | 1269/2123 | 1/8 | 50/96 | Java难到哭,但是有信心击败他! |
第五周 | 737/2860 | 1/9 | 30/126 | 难度的减小激发了学习动力 |
第六周 | 542/3402 | 2/11 | 20/146 | 不能说难度变小!!!又难了T T |
第七周 | 956/4357 | 1/12 | 35/181 | 平平淡淡才是真 |
第八周 | 2448/6805 | 3/15 | 80/261 | 四则运算花的时间太多了,还好书上例题的代码老师给了 |
第九周 | 1284/8089 | 2/17 | 70/331 | IO异常的处理是真的有点难度 |
第十周 | 907/8996 | 1/17 | 40/371 | 需要调整自己的状态!! |
-
计划学习时间:40小时
-
实际学习时间:40小时
-
改进情况:commit的要求继续实施,根据学长对上周博客的肯定加强自己的信心,我也去学习了一下他人的优秀博客,并且在自己博客中取长补短。