20172316 2018-2019-1《程序设计与数据结构》第四周学习总结

20172316 2017-2018-2《程序设计与数据结构》第四周学习总结

教材学习内容总结

第六章 列表

列表和以前的栈、队列有类似之处,都是一种集合,不一样之处在于:列表能够在中间添加和删除元素。html

其方法主要有git

方法 描述
add(E element) 列表末端添加
add(int index,E element) 索引处添加
get(int index) 返回索引处元素
remove(E o) 删除列表中第一个o
remove(int index) 删除索引处元素
set(int index,E element) 替代索引处元素
size() 返回元素数量

这些方法实现起来和以前的线性结构并没有二致,以前也在队列中使用过中间插入的方法,处理起来不难。数组

无序和有序:这是本章和以前最不同的地方,列表分为三种类型:有序、无序、索引。有序列表add()时会根据所添加元素的关键值自动排序;无序列表则能够根据须要添加至所制定的位置(前addToFront()、后addToRear()、中addAfter())。网络

利用数组、链表来实现有序和无序列表:理解了上面的概念后,无需列表实现方法和栈、队列的实现基本相同。值得注意的是有序列表须要Comparable接口来帮助实现,参考了上学期第八周的做业和知识进行复习。数据结构


教材学习中的问题和解决过程

  • 有序无序,当时光从字面上理解,误觉得有序指具备线性的结构而无序反之,结果并非这样。有序和无序指的是列表元素的内在关联,看书后获得正确理解(上面↑)学习

  • 什么是Serializable接口?(串行化?序列化?)ui

引用:设计

什么是Serializable接口?
一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化
什么是序列化?
将对象的状态信息转换为能够存储或传输的形式的过程,在序列化期间,对象将其当前状态写入到临时存储区或持久性存储区,以后,即可以经过从存储区中读取或反序列化对象的状态信息,来从新建立该对象
什么状况下须要序列化?
当咱们须要把对象的状态信息经过网络进行传输,或者须要将对象的状态信息持久化,以便未来使用时都须要把对象进行序列化3d


代码调试中的问题和解决过程

基本没有问题,都是能够立马解决的小细节(索引差一位、链表一个指针丢失的小问题)。指针


代码托管

(statistics.sh脚本的运行结果截图)


上周考试错题总结

  • 1.Because queue operations modify both ends of the collection, fixing one end at index 0 eliminates the requirement that elements be shifted.
  • 正确答案:False
  • 缘由:书中说:因为队列操做会修改集合的两端,所以将一端固定在索引0处。并未说消除了元素位移的需求。
  • 2.Treating arrays as circular eliminates the need to shift elements in an array queue implementation.
  • 正确答案:True
  • 缘由:环形数组消除了元素位移的需求,是对的,估计我是选错了。
  • 3.A polymorphic reference can refer to different types of objects over time.
  • 正确答案:True
  • 缘由:这不就是多态的特色吗?
  • 4.A linked implementation of a stack adds and removes elements from the _______ of the linked list.
  • 正确答案:A.Front
  • 缘由:未认真看题,觉得应选top

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 6/6
第二周 771/771 1/2 16/22
第三周 562/1233 1/3 15/37
第四周 1503/2736 2/5 15/52

结对互评

唐才铭19
王文彬29

参考资料

相关文章
相关标签/搜索