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、语法层次:抽象类:1.由abstract关键词修饰的类称之为抽象类。
2.抽象类中没有实现的方法称之为抽象方法,也须要加关键字abstract。
3.抽象类中也能够没有抽象方法,好比HttpServlet方法。
4.抽象类中能够有已经实现的方法,能够定义成员变量。
接口:1.由interface关键词修饰的称之为接口;
2.接口中能够定义成员变量,可是这些成员变量默认都是public static final的常量。
3.接口中没有已经实现的方法,所有是抽象方法。
4.一个类实现某一接口,必须实现接口中定义的全部方法。
5.一个类能够实现多个接口。2、设计层次:详见博客最后连接。
- 问题2:泛型的做用是什么?
- 问题2解决方案:从Java5.0开始,容许用户基于泛型来定义一个类。也就是说,咱们能够定义一个类,它存储,操做和管理的对象的数据类型直到改类实例化时才被指定。这使得结构的建立不只能够操做“泛型”元素,并且还能够提供类型检查。
- 问题3:使用数组和链表均可以实现栈,那么二者的优缺点是什么?
- 问题3解决方案:只要在须要时,链表实现才会分配储存空间,而且只有硬件空间大小的理论限制。数组实现为每一个对象使用的空间更少,由于他只须要储存对象,不须要储存额外的指针。可是,在初始的时候,数组会分配比它所需的更多空间。
代码调试中的问题和解决过程
问题1:在使用数组进行堆栈的时候,进行测试时老是得不到正确的结果。会把我push的数字屡次输出,没法获得正确的结果。
html
问题1解决方案:在debug了以后,发现是我“result”的变量是在方法外定义的,而不是方法内,这就致使“result”的值没法初始化为零,输出的时候看起来就会像是屡次输出。

前端
问题2:在进行编程项目4_2的时候,输出时没法获得正确的数字。
git
问题2解决方案:在进行toString的时候,没有额外定义一个变量使它等于count,而是直接使用count进行自减,致使count的量出现变化,没法正确的进行输出。编程


上周考试错题总结
- 错题1:The analysis of nested loops must take into account both the inner and outer loops.
A . True
B . Flase
- 解析:分析嵌套循环的复杂度是,必须将内层循环和外层循环都考虑进来。
- 错因:这题彻底是不该该错的,彻底是因为本身粗枝大叶,对英语没有理解清楚就选了答案。
结对及互评
- 博客中值得学习的或问题:
- 代码中值得学习的或问题:
点评过的同窗博客和代码
其余(感悟、思考等,可选)
这是开学的第二个星期了,状态相比第一个星期有所回升,但仍是不尽人意,在学习的时候注意力仍然不够集中,容易分散。在暑假里丢掉的东西感受尚未彻底捡起来,在这周写代码的时候,也常常会犯一些低级的错误,常常会出现变量定义位置错误的状况,在这上面也浪费了不少时间。但愿能在接下来的学习时间中状态能稳步提升,自身能不断进步!数组
学习进度条
第一周 |
200/200 |
1/1 |
5/20 |
|
第二周 |
981/1181 |
1/2 |
15/20 |
|
计划学习时间:15小时数据结构
实际学习时间:15小时oop
参考资料