20172318 2018-2019-1 《程序设计与数据结构》第2周学习总结
教材学习内容总结
- 集合
- 集合是一种聚集、组织了其他对象的对象
- 集合中的元素通常是按照它们添加到集合的顺序,或者是按元素之间的某种内在关系来组织的·
- 集合是一种隐藏了实现细节的抽象·
- 数据结构是一种用于实现集合的基本编程结构。
- 栈集合
- 栈的元素是按后进先出(凵FO)的方法进行处理的,最后进入栈中的元素最先被移出·
- 编程人员选择的数据结构,应与需要进行数据管理的类型相适应·
- 主要的面向对象概念
- 多态引用(polymorphicreference)是一个引用变量,它可以在不同地点引用不同类型的对象。继承可用于创建一个类层次,其中一个引用变量可用于指向与之相关的任意对象。
- 泛型:我们可以定义一个类,以便它能存储、操作和管理在实例化之前没有指定是何种类型的对象。
- 使用栈计算后缀表达式
- 栈是用于计算后缀表达式的理想数据结构。
- 异常
- 在Java程序中出现问题时,会产生异常或错误。异常(exception)就是一个对象,它
定义了一种非正常或错误的情况。异常由程序或运行时环境抛出,可以按预期的被捕获或
被正确处理。 - 错误(error)与异常类似,只不过错误往往表示一种无法恢复的情况,且不
必去捕获它。 - Java有一个预定义的异常和错误集,当程序运行时它们可能会发生。
- 错误和异常表示不正常或不合法的处理·
- 在Java程序中出现问题时,会产生异常或错误。异常(exception)就是一个对象,它
- 栈ADT
- Java接口定义了一个抽象方法集,有助于把抽象数据类型的概念与其实现分隔开来·
- 通过使用接口名作为返回类型,方法就不会局限于实现栈的任何特定类
- 用数组实现栈
- 出于运行效率的考虑,基于数组的栈实现总是使栈底位于数组的索引0处
- 链接作为引用
- 链式结构(linkedstructure)是一种数据结构,它使用对象引用变量来创建对象之间的链接。
- 裢表由一些对象构成,其中每个对象指向了链表中的下一对象。
- 链表会按需动态增长,因此在本质上,它没有容量限制·
- 管理链表
- 要访问其他元素,必须先访问第一个元素,
然后顺着下一个指针从一个元素到另一个元素 - 结点可以被插入到链表的任意位置:链表的前端、链表中的内部结点之间或链表的末
端。在链表前端添加结点时,需要重新没置指向整个链表的引用 - 链表中的任一结点都可被删除。但不管删除哪个结点,都必须维护链表的完整性。与
插入结点的过程一样,在结点的删除中,链表首结点的处理也是一种特例。
- 要访问其他元素,必须先访问第一个元素,
教材学习中的问题和解决过程
-
问题1:泛型的好处
-
问题1解决方案:在引入范型之前,Java类型分为原始类型、复杂类型,其中复杂类型分为数组和类。引入范型后,一个复杂类型就可以在细分成更多的类型。
例如原先的类型List,现在在细分成List -
问题2:数组实现栈和链表实现栈分别有什么好处
-
问题2解决方案:只要在需要时,链表实现才会分配存储空间,并且只有硬件空间大小的理论限制。数组实现为每个对象使用的空间更少,因为它只需存储对象,不需要存储额外的指针。但是,在初始的时候,数组会分配比它所需的更多空间。
代码调试中的问题和解决过程
- 问题1:如何排序各个单词的字母
- 问题1解决方案:参考了上个学期的charAt方法将各个单词的字母排序
上周考试错题总结
-
错题1及原因,理解情况
A system that is well designed, written, and documented exhibits the quality characteristic of ____________.
A .Reliability
B .Maintainability
C .Efficiency
D .Robustness
正确答案B,一个设计好的、书面的、有文件的系统展示了其可维护的特性 -
错题2及原因,理解情况
Software must make efficient use of resources such as CPU time and memory.
A .True
B .Flase
选B,软件无需一定要有效地使用cpu和内存,主要看情况 -
错题3及原因,理解情况
A stack can be used to preserve the order of a set of data.
A .True
B .Flase
选B,队列可以保存顺序,堆栈保存相反顺序 -
错题4及原因,理解情况
The order of an algorithm is found by eliminating constants and all but the dominant term in the algorithm’s growth function
A .True
B .Flase
选A,算法的阶次是忽略该算法的增长函数中的常量和其他次要项,只保留主项而得出的.
代码托管
点评过的同学博客和代码
- 本周结对学习情况
- 20172312
- 结对学习内容
- 课本第三、四章
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 8/8 | |
第二周 | 500/500 | 1/2 | 15/ 23 |