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

20172319 2018.09.10-09.16

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

目录


教材学习内容总结

第三章 集合概述——栈:

  • 3.1 集合:
  • 集合(collection)是一种汇集、组织了其余对象的对象。其定义了一种特定的方式 ,能够访问、管理所包含的对象(称为该集合的元素)。
  • 集合的使用者——一般是软件系统中的另外一个类或对象——只能经过这些预约的方式与该集合进行交互。
  • 集合能够分为两大类:线性集合和非线性集合:
  • 线性集合是一种其元素按直线方式组织的集合,一般按照添加的顺序。
  • 非线性集合时一种其元素按某种非直线方式组织的集合,一般按照内在关系组织。
  • 集合是一种抽象数据类型。html

  • 3.1.1 抽象数据类型
  • 抽象(abstraction)能隐藏某些细节;
  • 数据类型(data type): 一组值及做用于这些数值上的各类操做。
  • 数据结构(data structu):一种用于实现集合的编程结构集。
  • ADT的抽象性:必须对其实现的细节做出定义,但这些定义用户不可见。java

  • 3.1.2 java集合API
  • java标准类库中定义的几种表示不一样类型集合的类
    git

  • 3.2 栈集合: 线性集合
  • 后进先出(Last in , first out, LIFO) : 栈的基本使用就是用于颠倒顺序;
  • 栈的一些操做
  • /**编程

    • Stack类数组

    • 栈:桶型或箱型数据类型,后进先出,相对堆Heap为二叉树类型,能够快速定位并操做安全

    • Stack ,支持泛型 数据结构

    • public class Stack extends Vector 函数

    • Stack的方法调用的Vector的方法,被synchronized修饰,为线程安全(Vector也是)学习

    • Stack methods:测试

    • push : 把项压入堆栈顶部 ,并做为此函数的值返回该对象

    • pop : 移除堆栈顶部的对象,并做为此函数的值返回该对象

    • peek : 查看堆栈顶部的对象,,并做为此函数的值返回该对象,但不从堆栈中移除它

    • empty : 测试堆栈是否为空

    • search : 返回对象在堆栈中的位置,以 1 为基数

    • */

  • 3.3 主要的面象对象概念: 已在以前的博客中提过,这里再也不重复叙述。

  • 3.4 使用栈计算后缀表达式:
  • 中缀表达式:6 - 9
  • 后缀表达式:6 9 -
  • 计算过程:由左至右,将扫描到的操做符应用与前面相邻的两个操做数

  • 3.5 异常(exception):
  • 异常是一个对象,其定义了一种非正常或错误的状况,但其不一样于错误(没法恢复),其能够被捕获或适当地处理。

  • 3.6 栈ADT:
  • java接口定义了一个抽象方法集,能够将抽象类型的概念与实现分隔开
  • 3.7 用数组实现栈:
  • 容量:数组的单元数量,数组一旦建立好,其不可变。

  • 3.8 ArrayStack类:
  • 数组实现栈的一个应用实例,包含栈的一些基本操做。

第四章 链式结构——栈:

  • 4.1 连接做为引用:
  • 链式结构: 使用对象引用变量(指针)来建立对象之间的连接。
  • 链表由许多对象构成,每一个对象指向了链表中的下一个对象。

  • 4.2 管理链表:
  • 访问元素:从第一个链表元素开始,顺着链表往下进行。
  • eg:

Person current =  first;
for (int i = 0; i<n; i ++)
  current = current.next
  • 查找特定元素:

  • eg:

String searchstring = "要寻找的元素";
Person current = first;
while ((not(current.equals(searchstring))&&(current.next !=null)
current = current.next;
  • 插入、删除节点:
  • 注意先后顺序,防止链表丢失。

  • 4.3 无连接的元素:
  • 双向链表:两个引用,分别指向上下两个元素,链表两端放置哑节点。

  • 4.6 用链表实现栈:
  • 从链表的一端添加或删除元素。

返回目录


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

  • 问题1:无。
  • 解决:

返回目录


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

  • 问题1:没法对链表的首节点作操做。



  • 解决:能够看到,return得到的Head本是677,但在实际应用时又变为676,最终使用

System.out.println
  • 直接输出,虽然面板上能看见其在链表的头部,但在内部并无接上链表,只是先于链表前打印。

返回目录


代码托管

返回目录


上周考试错题总结

  • 错题1:

  • 解决: 误选,堆栈可用于保存数据。

  • 错题2:

  • 解决:分不清是2n仍是2的n次方。

返回目录


结对及互评

点评过的同窗博客和代码

  • 本周结对学习状况

返回目录


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


学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 3000行 15篇 300小时
第一周 0/0 1/1 12/12
第二周 935/935 1/2 24/36

返回目录


参考资料

数据结构(Java实现)之单向链表的节点表示、插入、删除、单向链表反转和串联
【数据结构】链表的原理及java实现
java集合包总结(添加、删除等操做实现原理)

返回目录

相关文章
相关标签/搜索