20172318 2018-2019-1 《程序设计与数据结构》第2周学习总结

20172318 2018-2019-1 《程序设计与数据结构》第2周学习总结

教材学习内容总结

  • 集合
    • 集合是一种聚集、组织了其他对象的对象
    • 集合中的元素通常是按照它们添加到集合的顺序,或者是按元素之间的某种内在关系来组织的·
    • 集合是一种隐藏了实现细节的抽象·
    • 数据结构是一种用于实现集合的基本编程结构。
  • 栈集合
    • 栈的元素是按后进先出(凵FO)的方法进行处理的,最后进入栈中的元素最先被移出·
    • 编程人员选择的数据结构,应与需要进行数据管理的类型相适应·
  • 主要的面向对象概念
    • 多态引用(polymorphicreference)是一个引用变量,它可以在不同地点引用不同类型的对象。继承可用于创建一个类层次,其中一个引用变量可用于指向与之相关的任意对象。
    • 泛型:我们可以定义一个类,以便它能存储、操作和管理在实例化之前没有指定是何种类型的对象。
  • 使用栈计算后缀表达式
    • 栈是用于计算后缀表达式的理想数据结构。
  • 异常
    • 在Java程序中出现问题时,会产生异常或错误。异常(exception)就是一个对象,它
      定义了一种非正常或错误的情况。异常由程序或运行时环境抛出,可以按预期的被捕获或
      被正确处理。
    • 错误(error)与异常类似,只不过错误往往表示一种无法恢复的情况,且不
      必去捕获它。
    • Java有一个预定义的异常和错误集,当程序运行时它们可能会发生。
    • 错误和异常表示不正常或不合法的处理·
  • 栈ADT
    • Java接口定义了一个抽象方法集,有助于把抽象数据类型的概念与其实现分隔开来·
    • 通过使用接口名作为返回类型,方法就不会局限于实现栈的任何特定类
  • 用数组实现栈
    • 出于运行效率的考虑,基于数组的栈实现总是使栈底位于数组的索引0处
  • 链接作为引用
    • 链式结构(linkedstructure)是一种数据结构,它使用对象引用变量来创建对象之间的链接。
    • 裢表由一些对象构成,其中每个对象指向了链表中的下一对象。
    • 链表会按需动态增长,因此在本质上,它没有容量限制·
  • 管理链表
    • 要访问其他元素,必须先访问第一个元素,
      然后顺着下一个指针从一个元素到另一个元素
    • 结点可以被插入到链表的任意位置:链表的前端、链表中的内部结点之间或链表的末
      端。在链表前端添加结点时,需要重新没置指向整个链表的引用
    • 链表中的任一结点都可被删除。但不管删除哪个结点,都必须维护链表的完整性。与
      插入结点的过程一样,在结点的删除中,链表首结点的处理也是一种特例。

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

  • 问题1:泛型的好处

  • 问题1解决方案:在引入范型之前,Java类型分为原始类型、复杂类型,其中复杂类型分为数组和类。引入范型后,一个复杂类型就可以在细分成更多的类型。
    例如原先的类型List,现在在细分成List, List等更多的类型。
    注意,现在List, List是两种不同的类型,
    他们之间没有继承关系,即使String继承了Object。下面的代码是非法的
    List ls = new ArrayList();
    List lo = ls;
    这样设计的原因在于,根据lo的声明,编译器允许你向lo中添加任意对象(例如Integer),但是此对象是
    List,破坏了数据类型的完整性。
    在引入范型之前,要在类中的方法支持多个数据类型,就需要对方法进行重载,在引入范型后,可以解决此问题(多态),更进一步可以定义多个参数以及返回值之间的关系。
    例如
    public void write(Integer i, Integer[] ia);
    public void write(Double d, Double[] da);
    的范型版本为
    public void write(T t, T[] ta);

  • 问题2:数组实现栈和链表实现栈分别有什么好处

  • 问题2解决方案:只要在需要时,链表实现才会分配存储空间,并且只有硬件空间大小的理论限制。数组实现为每个对象使用的空间更少,因为它只需存储对象,不需要存储额外的指针。但是,在初始的时候,数组会分配比它所需的更多空间。

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

    • 问题1:如何排序各个单词的字母
    • 问题1解决方案:参考了上个学期的charAt方法将各个单词的字母排序

    上周考试错题总结

    • 错题1及原因,理解情况
      A system that is well designed, written, and documented exhibits the quality characteristic of ____________.
      A .Reliability
      B .Maintainability
      C .Efficiency
      D .Robustness
      正确答案B,一个设计好的、书面的、有文件的系统展示了其可维护的特性

    • 错题2及原因,理解情况
      Software must make efficient use of resources such as CPU time and memory.
      A .True
      B .Flase
      选B,软件无需一定要有效地使用cpu和内存,主要看情况

    • 错题3及原因,理解情况
      A stack can be used to preserve the order of a set of data.
      A .True
      B .Flase
      选B,队列可以保存顺序,堆栈保存相反顺序

    • 错题4及原因,理解情况
      The order of an algorithm is found by eliminating constants and all but the dominant term in the algorithm’s growth function
      A .True
      B .Flase
      选A,算法的阶次是忽略该算法的增长函数中的常量和其他次要项,只保留主项而得出的.

    代码托管

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20172312
      • 结对学习内容
        • 课本第三、四章

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/0 1/1 8/8
    第二周 500/500 1/2 15/ 23

    参考资料

posted @ 2018-09-18 22:22  m1sty  阅读(150)  评论(0编辑  收藏  举报