第五周学习总结

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上有几个测试代码周一测试的时候还能用,现在运行报错了,正在调试中。

代码托管

image

结对学习情况

  • 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小时

posted @ 2017-10-15 22:02  162315  阅读(171)  评论(0编辑  收藏  举报