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

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

    参考资料

  • 相关阅读:
    在JavaScript中对HTML进行反转义
    JavaScript 删除数组中的对象
    CSS中的before和:after伪元素深入理解
    关于css浮动的一点思考
    前端常见跨域解决方案(全)
    window.location对象详解
    51nod 1001 数组中和等于K的数对
    51nod 1002 数塔取数问题
    51nod 1015 水仙花数
    51nod 1080 两个数的平方和
  • 原文地址:https://www.cnblogs.com/zhangyeye233/p/9671800.html
Copyright © 2020-2023  润新知