20172332 2017-2018-2 《程序设计与数据结构》第二周学习总结
教材学习内容总结
第三章 用数组实现栈
- 1.集合分为两大类:①线性集合:按照顺序一个一个排。②非线性集合:存在顺序并列的情况。
- 2.数据结构是一种用于实现集合的基本编程结构!
- 3.栈是一种线性集合,后进先出(LIFO),也就是会把保存的数据反序输出。
- 4.面向对象的三大特征:继承,封装,多态。
- 5.在不确定类型时,可以定义为泛型T,然后在之后再改。类定义头的尖括号中包含指向该类型的引用。
- 6.栈是计算后缀表达式的理想数据结构,在进行运算时,先把中缀表达式转为后缀表达式,然后从左到右扫描,数字入栈,遇见符号,把前两个数字进行相应的运算然后放入栈中(减法是第二个数减去栈顶的数)。
- 7.javadoc:一种工具,可以解析该注释并能抽取出有关类和方法的信息。javadoc注释以/**开始,以*/结束。
- 8.javadoc标签用于标识特定类型的信息,比如@author标签就是表示编写代码的程序员。
- 9.异常是一个对象,由程序或运行时环境抛出,可以捕捉它并且处理,虽然错误与异常类似,但是错误不能被解决。
-
- 使用ArrayStack实现栈的操作并且用EmptyCollectionException类捕捉异常。
第四章 用链表实现栈
- 1.链表最重要的东西——引用变量(指针)
- 2.对象引用变量存放的具体位置不重要,重要的是要能够利用该引用变量访问对象。
- 3.实现链表时,需要一个单独的引用变量来表示链表的首结点,也就是链表必须有头结点,终止于其next引用为空的结点。
- 4.链表的基本插入节点、删除节点等功能的实现。
- 5.双向链表:需要两个引用,一个指向链表的头结点,另一个指向链表的末结点,每个结点都存在两个引用,一个指向下一个元素,一个指向上一个元素。
- 6.如果在双向链表中使用哑结点,那么就得在链表的两端都放置哑结点。
- 7.栈和递归的之间的关系是总可以把一个递归程序改写成使用栈的非递归程序。不过此时不是使用递归来跟踪数据,而是创建自己的栈来跟踪数据。
- 8.使用链表实现的栈和使用数组实现的栈一样,都需要写出相应的push、pop等方法。
教材学习中的问题和解决过程
- 问题1:哑结点是什么,有什么作用?
- 问题1解决方案:哑结点其实就是放在第一个存放数据结点之前、头结点之后的结点。加入哑结点之后就会方便执行链表的一些操作。
代码调试中的问题和解决过程
- 问题1:
错的原因。
- 问题1解决方案:我的那种方法链表会断连不起来。
代码托管
上周考试错题总结
1.The degree to which erroneous situations are handled gracefully is ____________
- A .Reliability
- B .Usability
- C .Efficiency
- D .Robustness
- 答案:D ;我选的:A
- 分析:正确处理错误情况的程度是:健壮性
- 单词:1.Robustness:健壮性。
2.Software that is easily portable, can be moved from one computing environment to another with little or no effort.
- A .True
- B .Flase
- 答案:A ;我选的:B
- 分析:软件很容易移植,可以很简单的从一个计算环境转移到另一种计算环境。
点评过的同学博客和代码
其他(感悟、思考等,可选)
- 因为本周事情很多,并没有把怎么好好学java,下周好好学习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 2/2 | |
第二周 | 1010/1010 | 1/2 | 10/12 |
-
计划学习时间:20小时
-
实际学习时间:10小时
-
改进情况:虽然比上周学习的时间长,但是本周的内容难,还是没有学的很清楚。