20172322 《程序设计与数据结构》第二周学习总结

20172322 《程序设计与数据结构》第二周学习总结

教材学习内容总结

本周学习内容较多,主要讲了两个方面:

  • 利用数组的知识实现栈
  • 利用链式结构的知识实现栈

虽然都是用于实现栈,但本次的学期又跟以前不太一样的,在上学期中我们是利用JavaAPI中自带的栈类stack来解决自己的各类问题,但本次我们我们需要自己来编写如何栈类,深入内部,了解更多。

我们先写出了一个接口StackADT后面的两个实现方法都实现了这个接口。

  • 利用数组的知识实现栈:写出ArrayStack首先实现接口StackADT分别重写pushpoppeekisEmptysize方法。
  • 利用链式结构的知识实现栈:写出LindedStack首先实现接口StackADT分别重写pushpoppeekisEmptysize方法。

两个实现方法差别非常小,不过利用链式结构有一个特别大的优势就是在push操作时不需要像数组一般遍历所有的元素。

其他的一些内容包括但不限于:

  • Javadoc,它除了可以用于备注外还可以创建关于类集的HTML文档,根据王老师透露,JavaJDK就是使用Javadoc实现的。
  • 异常:这个东西非常常见,但是这个东西的构造我们却不太清晰。我将在下一部分提到异常。
  • 是否为线性集合:链式结构是线性集合,而数组不是,并且非线性集合也许就没有任何组织形式
  • 数组的大小是固定的,并且每次扩充需要新建一个更大的数组来存放之前的元素,但是链表却不同,它没有限制。
  • 通过设置哨兵节点和哑节点可以解决处理第一个节点出现的问题。

教材学习中的问题和解决过程

  • 问题1:双向链表还不太明白。

  • 问题1解决方案:在网上查到了相关的知识Java中双向链表详解及实例之后了解实现方法和其重要的知识:双向链表是一种对称结构,它克服了单链表上指针单向性的缺点,其中每一个节点即可向前引用,也可向后引用,这样可以更方便的插入、删除数据元素。

    由于双向链表需要同时维护两个方向的指针,因此添加节点、删除节点时指针维护成本更大;但双向链表具有两个方向的指针,因此可以向两个方向搜索节点,因此双向链表在搜索节点、删除指定索引处节点时具有较好的性能。

  • 问题2:异常究竟是什么,它如何产生,在何种情况下出现,它的构架是什么?

  • 问题2解决方案:Java异常简介及其架构:Java异常是Java提供的一种识别及响应错误的一致性机制。
      Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。

  • 问题3:哨兵节点和哑节点如何使用?

  • 问题3解决:《哑节点---Merge Two Sorted Lists》《线性链表--哨兵节点》

代码调试中的问题和解决过程

  • 问题1:在对照ArrayStackLindedStack时以为只需要将top稍微改一改就好,结果发现有问题。
  • 问题1解决办法:向王文彬同学学习了相关的知识,修改了LindedStack,感谢他的帮助

代码托管

上周考试错题总结

  • 错题1及原因:眼瞎

  • 理解情况:下次记得好好看题

  • 错题2及原因:计算错误

  • 理解情况:别因为这些小问题错题啊,不应该啊。

  • 错题3及原因:难道2n比n的平方阶次还高吗...

  • 理解情况:不太懂

  • 错题4及原因:单词理解错误

  • 理解情况:并不是eliminating而是忽略
    忽略
    ignore

  • 错题5及原因:我记得我选的是True啊...

结对及互评

  • 博客中值得学习的或问题:
    • 范雯琪同学的博客课本上的学习内容总结部分写得十分详细,值得学习。
    • 错题部分虽然比较明了,但是使用非图片方法我觉得会浪费一些时间,直接以图片形式放上去或许可以有更多时间放在问题的理解上。
  • 代码中值得学习的或问题:
    • commit提交的解释清晰明了,我觉得我应该学习。
    • 有许多代码的问题都是我向她询问,我很感谢她

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172303

    • 结对学习内容

      • 我一开始对栈的实现有一些疑问,经过了她的耐心讲解后我豁然贯通。

其他

  • 感悟:学习是一个长久的过程,需要努力努力再努力。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/5000 2/2 8/8 认真学习!积极向上
第二周 812/812 1/3 22/30
  • 计划学习时间:20小时

  • 实际学习时间:22小时

  • 改进情况:根据学姐要求改进博客

参考资料

posted @ 2018-09-18 22:16  zhangyeye233  阅读(243)  评论(2编辑  收藏  举报