20172319 2018.09.10-09.16
《程序设计与数据结构》第2周学习总结
目录
教材学习内容总结
第三章 集合概述——栈:
-
3.1 集合:
-
集合(collection)是一种聚集、组织了其他对象的对象。其定义了一种特定的方式 ,可以访问、管理所包含的对象(称为该集合的元素)。
-
集合的使用者——通常是软件系统中的另一个类或对象——只能通过这些预定的方式与该集合进行交互。
-
集合可以分为两大类:线性集合和非线性集合:
-
线性集合是一种其元素按直线方式组织的集合,通常按照添加的顺序。
-
非线性集合时一种其元素按某种非直线方式组织的集合,通常按照内在关系组织。
-
集合是一种抽象数据类型。
-
3.1.1 抽象数据类型 :
-
抽象(abstraction)能隐藏某些细节;
-
数据类型(data type): 一组值及作用于这些数值上的各种操作。
-
数据结构(data structu):一种用于实现集合的编程结构集。
-
ADT的抽象性:必须对其实现的细节作出定义,但这些定义用户不可见。
-
3.1.2 java集合API :
-
java标准类库中定义的几种表示不同类型集合的类
-
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次方。
结对及互评
点评过的同学博客和代码
- 本周结对学习情况:
- 20172316赵乾宸
- 博客中值得学习的或存在问题:
- **博客中值得学习的或存在问题: **
- 对于异常的解释有些许误解。
其他(感悟、思考等,可选)
- 无。
返回目录
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 3000行 | 15篇 | 300小时 |
第一周 | 0/0 | 1/1 | 12/12 |
第二周 | 935/935 | 1/2 | 24/36 |
参考资料
数据结构(Java实现)之单向链表的节点表示、插入、删除、单向链表反转和串联
【数据结构】链表的原理及java实现
java集合包总结(添加、删除等操作实现原理)