zoukankan      html  css  js  c++  java
  • 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

    参考资料

  • 相关阅读:
    【leetcode】Binary Search Tree Iterator
    【leetcode】Palindrome Partitioning II
    【leetcode】Best Time to Buy and Sell Stock III
    【leetcode】Best Time to Buy and Sell Stock II
    【leetcode】Longest Consecutive Sequence
    【leetcode】Factorial Trailing Zeroes
    【leetcode】Simplify Path
    【leetcode】Generate Parentheses
    【leetcode】Combination Sum II
    【leetcode】Combination Sum
  • 原文地址:https://www.cnblogs.com/m1sty/p/9670725.html
Copyright © 2011-2022 走看看