20172304 《程序设计与数据结构》第四周学习总结

20172304 《程序设计与数据结构》第四周学习总结

教材学习内容总结

第六章主要介绍了列表,这个列表是一种概念上的笼统的定义。
列表包括链表和数组。
列表分为:有序列表,无序列表,索引列表。

有序列表 其元素按照元素的某种内在特性进行排序。
无序列表 其元素件不具有内在顺序,元素按照他们在列表中的位置进行排序
索引列表 其元素可以用数字索引来引用

有序列表和无序列表在插入式有区别,有序列表需要做到插入之后还是有序的。而无序列表不是这样的。而索引列表虽然可以通过索引进行插入,删除操作,但是还是要保持连续。要做到索引之间是连续的。
java集合API中的列表

方法 描述
add(E element) 往列表的末端添加一个元素
add(int index,E element) 在指定索引出插入一个元素
get(int index) 返回指定索引处的元素
remove(int index) 删除指定索引处的元素
remove(E object) 删除指定对象的第一个出现
set(int index,E element) 替代指定索引处的元素
size() 返回列表中的元素数量

使用无序列表:学习计划
其中的Course类定义了一些课程的信息例如系名,成绩等等。然后其中的ProgramOfStudy则是对Course类进行管理,做一些链表的基本操作。除此之外还添加了替换,查找等一些维护课程的必要操作。
索引列表应用实例:Josephus问题
这个就是隔几取一的问题。通过链表实现
列表ADT、

公共操作

操作 描述
removeFirst 从列表中删除第一个元素
removeLast 从列表中删除最后一个元素
remove 从列表中删除某个元素
first 查看位于列表前端的元素
last 查看位于列表末端的元素
contains 确定列表是否含有某个元素
isEmpty 确定列表是否为空
size 确定列表中的元素数量

有序列表

操作 描述
add 往列表中添加一个元素

无序列表

操作 描述
addToFront 把元素添加到列表的前端
addToRear 把元素添加到列表的末端
addAfter 把元素添加到列表中某个一直元素的后面

使用数组实现列表
使用链表实现列表

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

  • 问题1:串行化的问题
  • 问题1解决方案:书上提了一嘴有关串行化的概念,但是并没有深入的讲解,后来通过查阅资料得知,串行化可以将数据转换为字节流,也就是计算机最基本的数据结构——二进制,这使得串行化后的数据可以储存在任何储存空间。但是串行化只能应用在非静态方法和变量。而且必须实现Serializable接口。

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

由于这次进行的内容之前已经进行过很多次了(即链表和数组的),所以遇见的问题很少。

  • 问题1:在进行测试时发现无法引用变量。还有toString方法没有办法正常调用

  • 问题1解决方案:后来发现是没有加运行函数。还有在toString的函数里没有将那个环形数组中开头的索引值随循环做自减运算。

代码托管

代码截图

错题总结

第三周&第四周错题
错题一:

错题一解答:
栈的pop操作返回的显然是一个元素而不是一个节点,这是当时马虎。
错题二:

错题二解答:后来在编码过程中实践了是正确的。
错题三:

错题三解答:后面已经说了不是引用的类型,但是我还是错选了C,应该选A对象的类型。
错题四:

错题四解答:集合中储存的对象只包含对象本身,并不会有其具体实现的细节。
错题五:

错题五解析:这是很明显得是,在单向列表中,其中常的打印方式必然是从头部开始的,对应实现的栈的出入栈操作也是在链表的头部,也就是前部实现的。
第五周
错题一:

错题一解析:这道题我记得一开始我也想选A来着,知识不知道后来莫名其妙的选择了B。

博客互评

  • 博客中值得学习的或问题:
    20172301 郭恺同学本次博客十分简洁,对教材的内容概括的十分精炼,总体篇幅较短。
    20172328 李馨雨同学这次的博客中规中矩,没有特别出彩的地方,但是结构完整。

点评过的同学博客和代码

其他(感悟、思考等,可选)

  本周主要学习了列表,在我的认知中,列表就是包括链表和数组。经过了这么长时间的打磨历练,好像数组与链表的知识都已经掌握了,听老师说后面的束河图就要利用链表和数组方面的知识,不知道还要经过多少次考验。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 30/30 1/1 10/10
第二周 766/796 1/2 40/50
第三周 817/1613 1/3 20/70
第四周 1370/3983 2/5 30/100

参考资料

1.蓝墨云班课
2.java软件结构与数据结构
3.Java串行化问题

posted @ 2018-10-07 22:38  段志轩  阅读(88)  评论(1编辑  收藏