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


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

    教材学习内容总结

    • 集合
      • 集合是一种聚集、组织了其他对象的对象。
      • 集合中的元素通常是按照它们添加到集合的顺序,或者是按元素之间的某种内在关系来组织的。(线性集合和非线性集合)
      • 集合是一种隐藏了实现细节的抽象。(集合也是一种抽象,集合定义了一些接口操作,用户通过这些操作可以管理集合中的对象。
      • 数据类型是一组值及作用与这些数值上的各种操作。
      • 抽象数据类型是一种用于实现集合的编程结构集。
      • 数据结构是一种用于实现集合的基本编程结构。
    • 栈集合
      • 栈的元素是按按后进先出(LIFO)的方法进行处理的,最后进入栈中的元素最先被移出。
      • 编程人员选择的数据结构,应与需要进行数据管理的类型相适应。
      • 在栈的设计中,可以看到栈的作用与使用栈的应用程序之间的分离。注意:如果pop或peek操作可以作用于空栈,那么栈的任何实现都要能抛出一个异常。集合的作用不是去确定如何处理这样一个异常,而只是把它报告给使用该栈的应用程序。同样,在栈中不存在满栈的概念。因此,应该由栈来管理他自己的储存空间,消除发生满栈的可能。
    • 主要的面向对象概念
      • 多态应用是一个引用变量,它可以在不同地点应用不同类型的对象。继承可用于创建一个类层次,其中,一个引用变量可用于指向与之相关的任意对象。
      • 泛型:可以定义一个类,以便它能存储、操作和管理在实例化之前没有指定是何种类型的对象。
    class Box<T>{
        //用于管理类型T的对象的声明或代码
    }
    
    Box<Widget> box1 = new Box<Widget>
    Box<Gadget> box2 = new Box<Widget>
    
    • 异常
      • 异常就是一个对象,它定义了一种非正常或错误的情况。异常由程序或运行时环境抛出,可以按预期的被捕获或被正确处理。错误与异常类似,只不过错误往往表示一种无法恢复的情况,且不必去捕获它。
      • 错误和异常表示不正常或不合法的处理。
    • 栈ADT
      • Java接口定义了一个抽象方法集,有助于把抽象数据类型的概念与其实现分隔开来。
      • 通过使用接口名作为返回类型,方法就不会局限于实现栈的任何特定类。
    public interface  StackADT<T> {
        public void push (T element);
        public T pop();
        public T peek();
        public boolean isEmpty();
        public int size();
        public String toString();
    }
    
    • 链接作为引用
      • 对象引用变量可以用来创建链式结构。
      • 链表有一些对象构成,其中每个对象指向了链表中的下一对象。
      • 链表会按需动态增长,因此在本质上,它没有容量限制。
    • 管理链表
      • 从列表中插入和删除元素时有两种情况:一种是处理第一个结点的情况,另一种时处理其它结点的情况。通过在列表的前端引入哨兵节点哑节点,就可以去除这种涉及第一个结点的情况。哨兵结点可以作为一个假的第一个结点,并没有真正表示列表中的某个元素。当使用了哨兵结点时,所有的插入和删除操作就都属于第二种情况了。

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

    • 问题1:继承和接口的区别,上学期学习的时候查过这个问题,答案有些淡忘了,现在再码一遍以便于以后的复习。
    • 问题1解决方案:一、语法层次:抽象类:1.由abstract关键词修饰的类称之为抽象类。
      2.抽象类中没有实现的方法称之为抽象方法,也需要加关键字abstract。
      3.抽象类中也可以没有抽象方法,比如HttpServlet方法。
      4.抽象类中可以有已经实现的方法,可以定义成员变量。
      接口:1.由interface关键词修饰的称之为接口;
      2.接口中可以定义成员变量,但是这些成员变量默认都是public static final的常量。
      3.接口中没有已经实现的方法,全部是抽象方法。
      4.一个类实现某一接口,必须实现接口中定义的所有方法。
      5.一个类可以实现多个接口。二、设计层次:详见博客最后链接。
    • 问题2:泛型的作用是什么?
    • 问题2解决方案:从Java5.0开始,允许用户基于泛型来定义一个类。也就是说,我们可以定义一个类,它存储,操作和管理的对象的数据类型直到改类实例化时才被指定。这使得结构的创建不仅可以操作“泛型”元素,而且还可以提供类型检查。
    • 问题3:使用数组和链表都可以实现栈,那么两者的优缺点是什么?
    • 问题3解决方案:只要在需要时,链表实现才会分配储存空间,并且只有硬件空间大小的理论限制。数组实现为每个对象使用的空间更少,因为他只需要储存对象,不需要储存额外的指针。但是,在初始的时候,数组会分配比它所需的更多空间。

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

    • 问题1:在使用数组进行堆栈的时候,进行测试时总是得不到正确的结果。会把我push的数字多次输出,无法得到正确的结果。

    • 问题1解决方案:在debug了之后,发现是我“result”的变量是在方法外定义的,而不是方法内,这就导致“result”的值无法初始化为零,输出的时候看起来就会像是多次输出。

    • 问题2:在进行编程项目4_2的时候,输出时无法得到正确的数字。

    • 问题2解决方案:在进行toString的时候,没有额外定义一个变量使它等于count,而是直接使用count进行自减,导致count的量出现变化,无法正确的进行输出。

    代码托管


    • 由于AS无法git,现将代码和效果图贴上。



    上周考试错题总结

    • 错题1:The analysis of nested loops must take into account both the inner and outer loops.
      A . True
      B . Flase
    • 解析:分析嵌套循环的复杂度是,必须将内层循环和外层循环都考虑进来。
    • 错因:这题完全是不应该错的,完全是由于自己粗心大意,对英语没有理解清楚就选了答案。

    结对及互评

    • 博客中值得学习的或问题:
      • 排版精美,对于问题研究得很细致,解答也很周全。
    • 代码中值得学习的或问题:
      • 代码写的很规范,思路很清晰,继续加油!

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20172332
      • 20172326
      • 结对学习内容
        • 第3章 集合概述——栈
        • 第4章 链式结构——栈

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

      这是开学的第二个星期了,状态相比第一个星期有所回升,但还是不尽人意,在学习的时候注意力仍然不够集中,容易分散。在暑假里丢掉的东西感觉还没有完全捡起来,在这周写代码的时候,也经常会犯一些低级的错误,经常会出现变量定义位置错误的情况,在这上面也浪费了很多时间。希望能在接下来的学习时间中状态能稳步提高,自身能不断进步!

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    第一周 200/200 1/1 5/20
    第二周 981/1181 1/2 15/20
    • 计划学习时间:15小时

    • 实际学习时间:15小时

    参考资料

  • 相关阅读:
    变量的解构赋值
    vue-progressbar 知识点
    <script>标签里的defer和async属性 区别(待补充)
    管理node.js版本的模块:n
    node 知识点
    让node支持es模块化(export、import)的方法
    jvm 知识点
    前端 术语
    js的严格模式
    commonJS、AMD、es模块化 区别(表格比较)
  • 原文地址:https://www.cnblogs.com/yu-kunpeng/p/9657284.html
Copyright © 2020-2023  润新知