20172315 2017-2018-2 《程序设计与数据结构》第十周学习总结
20172315 2017-2018-2 《程序设计与数据结构》第十周学习总结
教材学习内容总结
- 集合是一种对象,类似于保存其他对象的存储库。
- 集合的同构和异构:同构意味着这种集合保存类型全部相同的对象,异构可以保存各种类型的对象。
- 对象具有定义良好的接口,从而成为一种实现集合的完整机制。
- 数据结构的动态表示:一个动态数据结构用链来实现,利用对象引用作为连接对象之间的链,就可以建立起适用于各种情况的数据结构。按这种方式建立的数据结构具有动态性,因为其大小是在使用时动态确定的,而不是在声明时静态确定的。
- 其他的动态列表有用双向链表实现方案或添加头节点来实现
- 线性数据结构是顺序表在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。例如:列表、队列、堆栈等。
- 非线性数据结构:有些数据结构以非线性方式组织数据,因而称为非线性数据结构。例如:树和图等。
- Java集合类API中定义的类定义为泛型,是指一个集合所管理的对象的类型要在实例化时该集合对象时才能确定。泛型保证了集合中对象类型的兼容性。
教材学习中的问题和解决过程
- 问题1:不太了解书上的非线性数据结构
- 问题1解决方案:在网上查找了资料知道了二叉树:二叉树是一种非线性数据结构,属于树结构,最大的特点就是度为2,也就是每个节点只有一个左子树和一个右子树。二叉树的操作主要为创建,先序遍历,中序遍历,后序遍历。还有层次遍历。遍历有两种方式,一是采用递归的方式,二是采用转换为栈进行遍历,对二叉树的遍历本质上市将非线性结构转换为线性序列。参考资料
- 问题2:不太了解书上泛型
- 问题2解决方案:在晚上查到了相应的定义:泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。参考资料
代码调试中的问题和解决过程
- 问题1:写pp13.3时不知道怎么进行选择排序
- 问题1解决方案:在结合书上例题和进行资料查询之后,得到了这样的方法
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1及原因,理解情况
What does the following method compute? Assume the method is called initially with i = 0
public int question9(String a, char b, int i)
{
if (i = = a.length( )) return 0;
else if (b = = a.charAt(i)) return question9(a, b, i+1) + 1;
else return question9(a, b, i+1);
}
A . the length of String a
B . the length of String a concatenated with char b
C . the number of times char b appears in String a
D . returns 1 if char b appears in String a at least once, and 0 otherwise
E . the char which appears at location i in String a
正确答案: C
你的答案: D
该方法将字符串a中的每个字符与字符b进行比较,直到达到字符串a的长度。 - 错题2及原因,理解情况
An infinite loop and an infinite recursion
A . are different because it is impossible to detect the latter, while it's quite easy to detect the former
B . both continue to repeat indefinitely
C . both will be caught by the compiler
D . both will be caught by the Java Virtual Machine during execution
E . none of the above
正确答案: B
你的答案: C
无限循环和递归都是相似的,因为它们继续无限地重复。 编译器或运行时都不能捕获它们
结对及互评
评分标准
点评模板:
-
博客中值得学习的或问题:
- 书上内容纪录详细
- 对于书本有着自己的思考
- 问题记录有点少
-
代码中值得学习的或问题:
- 代码方法新颖
- 代码简洁
-
基于评分标准,我给本博客打分:11分。
点评过的同学博客和代码
- 本周结对学习情况
-
结对学习内容
- 13章
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 287/481 | 2/4 | 18/38 | |
第三周 | 320/801 | 3/7 | 22/60 | |
第四周 | 900/1600 | 2/9 | 30/90 | |
第五周 | 807/2407 | 2/11 | 40/130 | |
第六周 | 619/3023 | 2/13 | 40/170 | |
第七周 | 621/3644 | 2/15 | 40/210 | |
第八周 | 805/4364 | 2/17 | 40/250 | |
第九周 | 1787/6211 | 2/19 | 40/290 | |
第十周 | 792/ 7003 | 2/21 | 40/340 |