学号 2017-2018-20172309 《程序设计与数据结构》第10周学习总结
学号 2017-2018-20172309 《程序设计与数据结构》第10周学习总结
教材学习内容总结
- 集合与数据结构
- 集合是一种对象,类似于保存其他对象的存储库。
- 我们常常用集合表示一个专门用于保存元素的对象,并且该对象还提供增添、删除等管理所保存元素的服务。
- 集合分同构和异构。
- 对象具有定义良好的接口,从而成为一种实现集合的完善机制。
- 数据结构的动态表示
- 数组具有局限性,在存在期间具有固定的大小。动态数据结构的大小规模随需要增长和收缩。
- 一个动态数据结构用链来实现,利用对象引用作为连接对象间的链。
- 其他的动态列表
- 双向链表:双向链表的每一个节点都有两个引用。一个引用指向该节点前的一个节点,另一个引用指向该节点的后一个节点。
- 头节点:链表中的头节点是一个特殊的节点,包含了有关链表信息,如指向链表头和链表尾的引用及一个跟踪记录链表当前节点数的整型变量。
- 线性数据结构
- 队列:队列是一种以先进先出方式管理数据的线性数据结构。
- 堆栈:堆栈是一种以后进先出方式管理数据的线性数据结构。
- 非线性数据结构
- 树:树是一个非线性数据结构,由一个根节点和构成层次结构的多个节点组成。除根节点外的所有节点称为内部节点,没有子节点的节点称为叶节点。
- 图:图是 非线性数据结构,是用常见的编来连接节点。
- java集合类API
- ArrayList代表的是列表集合并且用基本的数组类型实现。
- LinkedList表明这是一个用动态内部链实现的列表集合。
- 泛型:指一个集合所管理的对象的类型要在实例化该集合对象时才确定。java集合类API中定义的类称为泛型
- 泛型保证了集合中对象类型的兼容性。
教材学习中的问题和解决过程
- 问题1:ArrayList和LinkedList类分别有什么优缺点?
- 问题1解决方案:
通过百度查询得:
- 问题2:如何理解泛型?
- 问题2解决方案:
1.概述:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。 2.格式: <数据类型> 注意:**该数据类型只能是引用类型**。 3.好处: A:把运行时期的问题提前到了编译期间 B:避免了强制类型转换 C:优化了程序设计,解决了黄色警告线问题,让程序更安全
代码调试中的问题和解决过程
- 问题1:如何理解这一段代码?
> public void add(DVD dvd)
> {
> DVDNode node = new DVDNode(dvd);
> DVDNode current;
>
> if(list==null)
> list=node;
> else
> {
> current = list;
> while(current.next!=null)
> current=current.next;
> current.next=node;
> }
> }
- 问题1解决方案:
- 问题2:PP13.3运行时显示出来的为地址:
- 问题2解决方案:出现这个问题我知道是因为没有写toString()方法,因为toString的内容是一个数值,所以以为不用toString,但事实说明确实需要toString,而且我还忘了怎么做!因此我的解决方案是使用自动生成toString()方法。
结果是
- 问题3:在做PP13.3出现空指针!
- 解决方案:有错误提示可知是因为在第60行出现错误的!因此我找到了错误:
图中箭头所指会循环直到current2为null,因此在下面的一个方框中的赋值是不正确的,相当于num没有节点当做载体。
因此我转变思路:
代码托管
上周考试错题总结
-
错题1及原因,理解情况:
做这题时没有考虑全面,忽略了输入值为负值的情况。 -
错题2及原因,理解情况:
递归的情况下,该方法使用相同的参数调用自己,所以n不会改变,因此如果(n> 0)最初为真,它将保持为真。 -
错题3及原因,理解情况:
考虑过多,直接递归就是自己调用自己,间接递归即中间还有一个方法。 -
错题4及原因,理解情况:
无限循环和递归都是相似的,因为它们继续无限地重复。 编译器或运行时(JVM)都不能捕获它们。 -
错题5及原因,理解情况:
这次做了一遍,发现是正确的,不知道以前怎么做错了。
点评模板:
优点与不足:
-
博客中值得学习的或问题:
- 内容解释结合图片来解释,显而易懂。
- 重点用不同的颜色突出。
- 对图与树的解释详细。
-
代码中值得学习的或问题:
- 代码解释有点少,可能是作业不是很难的缘故。
-
基于评分标准,我给本博客打分:14分。
点评过的同学博客和代码
其他(感悟、思考等,可选)
这一章非常的抽象,有点不适合我这种智商太高的人,导致我得想好久,不!应该是学好久。不过还好,最后还是弄懂了点皮毛。在这个过程中,发现自己非常的懒,想一个问题时,总是不善于深究。总是大脑自动跳出来,特别是当遇见那种反复循环的问题时,大脑不是不跳就是跳的太快,导致自己都跟不上。o(╥﹏╥)o真是服了自己!!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 075/200 | 1/1 | 05/20 | |
第二周 | 560/500 | 1/2 | 13/38 | |
第三周 | 972/1000 | 1/4 | 21/60 | |
第四周 | 694/1666 | 1/5 | 21/90 | |
第五周 | 1544/3095 | 1/6 | 30/90 | |
第六周 | 600/3627 | 1/7 | 30/120 | |
第七周 | 544/4200 | 2/9 | 20/140 | |
第八周 | 907/5107 | 2/10 | 20/160 | |
第九周 | 700/5807 | 1/11 | 20/180 | |
第十周 | 900/6782 | 2/13 | 20/200 |
参考资料
1.集合总结笔记(jdk 1.6)——ArrayList/LinkedList
2.数据结构——图
3.Java学习笔记(第8版)》学习指导
4.命令行参数总结