20172308《Java软件结构与数据结构》第二周学习总结

教材学习内容总结

第 3 章 集合概述——栈

  1. 集合:一种汇集、组织了其余对象的对象
  • 软件系统中的另外一个类或对象经过集合预约的方式与该集合进行交互来使用这些集合
  • 多年以来软件开发和研究人员定义了一些特定的集合类型致力于解决特定的问题类别
  • 集合分类:线性集合(元素按直线方式组织的集合),非线性集合(非直线方式组织)
    线性集合还能够根据元素的特征保持有序(如姓氏;非线性集合元素也能够)
  1. 抽象:隐藏某些细节html

  2. 抽象数据类型(ADT):一种在程序设计语言中还没有定义其值和操做的数据类型
  • 数据类型:一组值及做用于这些数值上的各类操做(如加减)
  • 集合是一种隐藏了实现细节的抽象(集合定义了一些接口操做)
  • 系统被划分红一些抽象的子系统,规定出这些子系统的目标以及它们之间的交互做用(以便不一样的人员进行开发)
  • ADT的抽象性体如今ADT必须对其实现的细节进行定义,且这些对用户不可见,因此,集合是一种抽象数据类型
  • 数据结构:一种用于实现集合的编程结构集
  1. Java集合API(应用程序编程接口):一个类集,表示一些特定类型的集合

第 四 章 链式结构——栈

  1. 栈:一种线性集合,后进先出

2.泛型:java

  • 定义一个类,尖括号中包含指向该类型的引用,以便他可以存储、操做和管理在实例化以前没有指定是何种类型的对象
  • 不能被实例化,他只是一个占位符
  • 类的泛型,只有当该类被实例化时,才建立该类型的对象
  • 使用泛型来建立可用于安全高效地存储任意类型的对象的集合

3.链表git

  • 由一些对象构成,其中每一个对象指向了链表的下一对象
  • 链表的首结点处理须要特别当心,以防止链表丢失

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

问题1:如何理解抽象和抽象数据类型
问题1解析:抽象数据类型和数据类型在实质上是一个概念,只不过是对数据类型的进一步抽象,不只限于各类不一样的计算机处理器中已经实现的数据类型,还包括为解决更为复杂的问题而由用户自定义的复杂数据类型。

所谓数据抽象是指用ADT描述程序处理的实体时,强调的是其本质的特征,不管内部结构如何变化,只要本质特性不变,就不会影响其外部使用。
例如,在程序设计语言中,常用的数据类型 int,它就能够理解为是一个抽象数据类型,在不一样的计算机或者操做系统中,它的实现方式可能会有不一样,可是它本质上的数学特性是保持不变的。
例如,在统计学生信息时,常用姓名、学号、成绩等信息,咱们能够定义这样的一个抽象数据类型student,它封装了姓名、学号、成绩三个不一样类型的变量,这样操做student的变量就可以很方便的知道这些信息了。算法

【参考资料】如何理解数据结构中的抽象数据类型?编程

问题2:如何理解“经过使用接口名做为返回类型,方法就不会局限于实现栈的任何特定类”
问题2解析:接口把方法的特征和方法的实现分割开来。这种分割体如今接口经常表明一个角色,它包装与该角色相关的操做和属性,而实现这个接口的类即是扮演这个角色的演员。

Java接口自己没有任何实现,由于Java接口不涉及表象,而只描述public行为,因此Java接口比Java抽象类更抽象化。数组

【参考资料】java 使用接口的好处?安全

代码运行中的问题及解决过程

问题1:在实现链表的删除节点的代码运行中出现了如图问题:


运行不出结果,猜想应该是循环出了问题,无限循环?
代码如图:

循环里的条件,删除的节点为空的可能性很小,因此要再加上一个条件,如图:

要删除的节点中的学号与当前节点中的学号相等时便可跳出循环。
还顺便测试了一下在删掉了插入节点的左右两端的其中一个节点以后,还可否正常插入节点,emmm,是不行滴:
数据结构

上周考试错题总结

  • 错题1:学习

  • 错题1解析:emmm, 手误测试

  • 错题2:

  • 错题2解析:不是很理解为何是错的;一个高效的系统的程序算法确定比一些冗杂的程序算法解决问题要容易的多吧,并且占用内存、CPU啥的都不多吧。百度的话也没看到相关解释

  • 错题3:

  • 错题3解析:栈的数据存储位置可能不是连续的,可是栈里的每个对象都有指向下一对象的引用,用数组实现的栈也是同样的

  • 错题4:

  • 错题4解析:这题的C选项写的多是2^n吧

代码托管

因为上学期的最后的代码统计是在虚拟机里统计的,和IDEA有所差距

下面是这学期IDEA的统计结果

因此,手动统计了一下代码数量,560行

结对及互评

  • 博客中值得学习的或问题:
    • 侯泽洋同窗的博客排版工整,界面很美观
    • 问题总结作得很全面
    • 对于书上的疑惑总会想办法解决它,这种探索的精神值得我去学习
  • 代码中值得学习的或问题:
    • 对于编程的编写总能找到角度去解决
  • 本周结对学习状况
    • 20172302
    • 结对学习内容
      • 第三章内容:集合概述——栈
      • 第四章内容:链式结构——栈

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 4/4
第二周 560/560 1/2 6/10
相关文章
相关标签/搜索