首页
登录 | 注册

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

20162324 2017-2018-1 《程序设计与数据结构》第5周学习总结

教材学习内容总结

1.Java Collections API的基本结构
20162324 《程序设计与数据结构》第5周学习总结

2.Collection接口

Collection作为队列形式存储的集合的抽象接口 Collection 是一个被高度抽象出来的接口、提供基本的操作数据的行为、属性的定义、要求子类必须提供两个构造方法、一个无参构造方法、一个以另一个Collection为基础的构造方法。就像课本上所举的例子,这个是高度抽象出来的,就像一个汽车一样我们使用它的接口,并不会去详细了解他的所有的细节。我们主要了解的就是怎么应用好听的接口。

  1. Collection实现的Java相关技术:继承/多态/泛型/接口;这些内容我们都有所了解,并且在以前的博客中有所提及:继承 多态 泛型

4.栈的应用:对于应用栈来说要应用好栈就要熟悉他的数据结构,在这一点上我们自己动手用数组和链表分别实现了栈的部分功能。
掌握栈的还是比较好的。
5.Java Stack API
20162324 《程序设计与数据结构》第5周学习总结

6.链表由对象组成,其中每个对象指向下一个对象;链表根据需要动态变大,在本质上没有容量限制,如果容量有了上限,那可能就是物理内存耗尽。

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

  • 问题1:在课本中提及到的有关链表的管理时就提到了哨兵节点,但是没有详细的介绍对此我并没有搞清楚这是什么?
  • 问题1解决方案:我在网上搜索,在知乎上找到也另一个类次的问题,并且在仔细的阅读别人的回答之后我就更好的理解了哨兵。
    作者:hdyjzdj
    来源:知乎

哨兵,顾名思义,是用来解决国家之间边界问题的,不直接参与生产活动。同样,计算机科学中提到的哨兵,也用来解决边界问题。在许多算法中,存在“邻居依赖问题”(我自己造的词),在处理当前元素时,要涉及到它旁边那个元素。那如果当前元素是边界元素呢,它没有旁边那个元素,如果不作处理,程序就可能出错;如果对它特别对待,就会增加代码复杂性,还会降低程序效率。应用哨兵,也就是申请若干个多余的元素作为边界元素的邻居,可以完美得解决这个问题。下面,我们会举一些哨兵应用的例子。链表单链表在插入和删除时,需要修改前驱结点的后继指针,这就形成了“邻居依赖”,链表中第一个元素没有前驱结点,如果没有特殊处理,在插入和删除第一个结点时,就会出错。所以我们可以申请一个头结点,作为原本的第一个结点的前驱结点,问题也就解决了。但是在这种方式中,我们要插入或者删除一个结点时,要知道它的前驱结点地址,这往往是麻烦的。另一个方式,也是我更喜欢的方式,是申请一个尾结点,作为原本最后一个结点的后继结点。要删除某个元素时,我们不删除当前这个结点,而是用后继结点的数据覆盖当前结点的数据,再删除后继结点。这种方式,不需要访问前驱结点,也就解决了获取前驱结点的困难。插入元素也是同理。而最后一个结点没有后继结点,所以需要一个尾结点作为哨兵。如果用的是双链表,就需要在头尾各加一个哨兵。

代码托管

由于没有区分所以截图在第六周博客中给出

上周考试错题总结

  • 测试的结果还不知道

本周结对学习情况

- [20162312](博客链接)
- 结对照片
- 结对学习内容

    栈及其有关的知识点。

其他(感悟、思考等,可选)

写代码些三种代码,这是老师在上课时说的,并且在前个学期我们最主要关注的是怎么写产品代码,这个学期在不断地些代码的过程中我才发现测试代码的重要性基本上是你的产品di代码的医生,要做到对产品代码的'“望闻问切”。总之这三种代码缺一不可。而且在测试代码的时候要尽量的覆盖正常、异常的各种情况,来进一步的确认代码是正确的而不是随随便便的进行一些测试。
同时在生活中也是如此,在做一件事的时候就应该进行相应的检查,越早发现越好,不要到问题已经发展到不可解决的时候再想着去纠正可能已经来不及了。

学习进度条

由于第五周放假没有单独记录,将第四周、第五周的学习的进度都会在第六周的总结中一起体现。

  • 计划学习时间:18小时

  • 实际学习时间:14小时

  • 改进情况:
    这周由于运动会的队列训练,导致我平时是我时间安排一直被打乱,没有办法有序的。按计划进行自己的活动。

参考资料


相关文章

  • 一.前言 在日常开发中,我们经常会碰到需要在运行时才知道对象个数的情况,这种情况不能使用数组,因为数组是固定数量的,这个时候我们就会使用集合,因为集合可以存储数量不确定的对象. 集合类是特别有用的工具类,不仅可以存储数量不等的对象,还可以实 ...
  • 汝之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践
        "描述一个事物,唯有一个名词定义它的概念,唯有一个动词揭露它的行为,唯有一个形容词表现它的特征.要做的,就是用心去寻找那个名词.那个动词.那个形容词--" -- 福楼拜 (Gustave Flaubert)   ...
  • Linux的内存分页管理
    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载   内存是计算机的主存储器.内存为进程开辟出进程空间,让进程在其中保存数据.我将从内存的物理特性出发,深入到内存管理的细节,特别是了解虚拟内存和内存 ...
  • 【TOGAF】总体认知
    TOGAF是什么 TOGAF(The Open Group Architecture Framework)是当前最为流行的企业架构框架理论之一,它为一个企业或组织对于企业架构的接受.创建.使用和维护提供了一系列辅助方法和工具.基于迭代过程模 ...
  • More Effective C++
    More Effective C++ 35个改善编程与设计的有效方法 只有深入了解C++编译器如何解释代码, 才有可能用C++语言写出健壮的软件. C++的难学, 不仅在其广博的语法, 语法背后的语义, 语义背后的深层思维, 深层思维背后的 ...
  • 简单总结: 7月2号,去年这个时候刚到北京,转眼一年一过,时间匆匆! 这一年发生很多事情,有生活有工作的,主要谈谈工作吧. 找工作还算顺利吧,7月2号到北京,找了一星期,7月11号就正式入职了. 刚开始对开发流程比较不熟悉,有些慢,一个简单 ...

2020 cecdns.com webmaster#cecdns.com
12 q. 0.078 s.
京ICP备10005923号