20172324 2018-2019-1 《程序设计与数据结构》第四周学习总结
Posted amberr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20172324 2018-2019-1 《程序设计与数据结构》第四周学习总结相关的知识,希望对你有一定的参考价值。
20172324 2018-2019-1 《程序设计与数据结构》第四周学习总结
教材学习内容总结
列表集合
列表 | 说明 |
---|---|
有序列表 | 其元素按照元素的某种内在特性进行排序 |
无序列表 | 其元素间不具有内在顺序,元素按照它们在列表中的位置进行排序(不要被名字误导,按照特殊顺序摆放,只是这种顺序与元素本身无关) |
索引列表 | 其元素可以用数字索引来引用 |
索引列表和数组的根本区别在于索引列表的索引值总是连续的。
Java API中的列表
方法 | 描述 |
---|---|
add(E element) | 往列表的末端添加一个元素 |
add(int index, E element) | 在指定索引处插入一个元素 |
get(int index) | 返回指定索引处的元素 |
remove(int index) | 删除指定索引处的元素 |
remove(o object) | 替代指定索引处的元素 |
set(int index,E element) | 返回列表中的元素数量 |
size() | 返回列表中的元素数量 |
使用数组实现列表
- 基于数组实现的列表首先要把列表的一端固定在索引0处,设置一个整数变量rear表示列表中的元素数目,同时表示列表末端的下一个可用位置。
- remove操作查找作为参数传递的元素,如果找到就从列表中删除,然后数组中更高引索的元素向下平移以填补空隙
- find方法用于查找制定元素,若存在便返回索引值
- 好处
- 使remove操作变得简单。
- 能用find方法来实现其他操作及方法
- 不会抛出异常
- 好处
- continue方法该操作用于判断指定元素是否在列表中
- add方法要进行多次比较和平移操作
- 无序列表的特有操作
- addToFront(复杂度为O(n))和addToRear(O(1))
- addAfter
- 两个参数,一个表示要添加的元素,一个表示目标元素,类似于remove和add操作,复杂度位O(n)
使用链表实现列表
- 链表实现的remove操作不需要平移元素,但有四种情况:
- 要删除的是列表的唯一元素
- 要删除列表的首元素
- 要删除列表的尾元素
- 要删除列表的中间元素。
教材学习中的问题和解决过程
- 问题1:列表与链表的关系
问题1解决方案:链表是一种实现策略,列表可以用链表或数组来实现,列表集合没有内在的容量大小,可以随着需求增大而增大1
- 问题2:instanceof的用法
问题2解决方案:
A instanceof B ,返回值为boolean类型,用来判断A是否是B的实例对象或者B子类的实例对象。如果是则返回true,否则返回false。
Person p = new Person() ; //
Man m = new Man() ; //Man是Person的子类
Animal a = new Animal() ;
m instanceof Man //返回true
m instanceof Animal//返回false
m instanceof Person//返回true
代码调试中的问题和解决过程
- 问题一:做pp5.2的时候题目要求自己编写toString方法,但是编完之后就提示有错误,错误在自己遍的toString方法上。
- 问题一解决方案:之前看书的时候没有注意这一句:“toString会变得更加复杂,因为元素不是从0处开始存储的,而且还可能会环绕数组的末端。”而我之前是直接复制5.1中的toString方法改的,所以出现了问题,发现问题重新改过之后就没有报错了
代码托管
上周考试错题总结
无
结对及互评
点评过的同学博客和代码
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0 | 1/1 | 20/20 | |
第二周 | 300/500 | 1/2 | 18/38 | |
第三周 | 300/600 | 1/3 | 18/38 |
参考资料
以上是关于20172324 2018-2019-1 《程序设计与数据结构》第四周学习总结的主要内容,如果未能解决你的问题,请参考以下文章
20172324 2018-2019-1 《程序设计与数据结构》第一周学习总结
20172324 2018-2019-1 《程序设计与数据结构》第二周学习总结
20172324 2018-2019-1 《程序设计与数据结构》第八周学习总结