20162315 2017-2018-1 《程序设计与数据结构》第5周学习总结
教材学习内容总结
- 集合分为两类:线性的:集合中的元素排成一行,非线性集合:按不同于一行的方式来阻止元素,例如按层次或是按网络的方式。
- 栈(Stack)是一个线性集合,其元素的添加及删除都是在一端进行。栈的处理方式是后进先出。
- Object类引用可指向任意一个对象,因为所有的类都派生于Object类。
- 泛型:可以定义一个类,它保存,操作并管理直到实例化时才确定具体类型的对象。
- 链表与普通数组不同,没有容量上限,它的大小总随着所保存的元素个数在变大或变小。
- 环境变量的几种配置方法:1.通过命令进行,将修改值作为选项传给编译程序或运行时环境。2.在命令解析器中临时修改CLASSPATH环境变量。
- 错误和异常代表不常见或不正确的处理。
教材学习中的问题和解决过程
- 问题1:第十四章中提到了“哨兵结点”,“哨兵结点可作为一个假的首结点,实际上并不代表表中的元素。”书上没有提哨兵结点如何实现?有什么用处?
- 解决方法:我看完书后去网络上看了一些论坛关于链表哨兵结点的解释,通过对网上一些论坛回复的阅读(https://www.zhihu.com/question/27155932) , 我理解的哨兵结点就是在头结点之前再申请一个结点(哨兵结点)作为原头结点的前驱结点,这样就可以简化代码,避免掉教材337页在头结点后面插入新结点的麻烦。
代码调试中的问题和解决过程
- 问题1:在完成ArrayStack的isEmpty方法时,我最开始编写了一个代码,大致是遍历数组,当这一项元素不为空时,返回布尔变量result的结果为真,当result为假时,返回result为假,最后返回result的值。结果在测试isEmpty方法时没通过。
- 解决方案:修改了几次测试代码中的stack的添加,删除元素后我发现是我的ArrayStack类里的方法编写的问题。我有点想当然了,认为只要数组全空这个方法就会一直返回result=true,然后就会返回true这个唯一出现的值,但实际上,根据上面的代码,每扫描一个元素就会返回一个result,最后有多少个元素就有多少个result,单元测试的时候assertEquals里一个expected值怎么对比的出来?后来我学习了袁逸灏同学一个比较严谨的方法,用数组为空元素的个数与数组长度相比,来判断result的值。
- 问题2:IDEA上有几个测试代码周一测试的时候还能用,现在运行报错了,正在调试中。
代码托管
结对学习情况
- 20162317袁逸灏
- 结对学习内容
- 如何优化isEmpty方法
- 他的博客中值得学习的地方
- 图文并茂,在对栈的理解中他运用了很多的栈的示意图来帮助理解。
- 结对学习内容
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 | |
第五周 | 400/1300 | 2/11 | 42/100 |
-
计划学习时间:15小时
-
实际学习时间12小时