第六章主要介绍了列表,这个列表是一种概念上的笼统的定义。
列表包括链表和数组。
列表分为:有序列表,无序列表,索引列表。php
有序列表 | 其元素按照元素的某种内在特性进行排序。 |
---|---|
无序列表 | 其元素件不具备内在顺序,元素按照他们在列表中的位置进行排序 |
索引列表 | 其元素能够用数字索引来引用 |
有序列表和无序列表在插入式有区别,有序列表须要作到插入以后仍是有序的。而无序列表不是这样的。而索引列表虽然能够经过索引进行插入,删除操做,可是仍是要保持连续。要作到索引之间是连续的。
java集合API中的列表html
方法 | 描述 |
---|---|
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、前端
公共操做java
操做 | 描述 |
---|---|
removeFirst | 从列表中删除第一个元素 |
removeLast | 从列表中删除最后一个元素 |
remove | 从列表中删除某个元素 |
first | 查看位于列表前端的元素 |
last | 查看位于列表末端的元素 |
contains | 肯定列表是否含有某个元素 |
isEmpty | 肯定列表是否为空 |
size | 肯定列表中的元素数量 |
有序列表git
操做 | 描述 |
---|---|
add | 往列表中添加一个元素 |
无序列表web
操做 | 描述 |
---|---|
addToFront | 把元素添加到列表的前端 |
addToRear | 把元素添加到列表的末端 |
addAfter | 把元素添加到列表中某个一直元素的后面 |
使用数组实现列表
使用链表实现列表数组
问题1:在进行测试时发现没法引用变量。还有toString方法没有办法正常调用
数据结构
问题1解决方案:后来发现是没有加运行函数。还有在toString的函数里没有将那个环形数组中开头的索引值随循环作自减运算。函数
代码截图
学习
第三周&第四周错题
错题一:
错题一解答:
栈的pop操做返回的显然是一个元素而不是一个节点,这是当时马虎。
错题二:
错题二解答:后来在编码过程当中实践了是正确的。
错题三:
错题三解答:后面已经说了不是引用的类型,可是我仍是错选了C,应该选A对象的类型。
错题四:
错题四解答:集合中储存的对象只包含对象自己,并不会有其具体实现的细节。
错题五:
错题五解析:这是很明显得是,在单向列表中,其中常的打印方式必然是从头部开始的,对应实现的栈的出入栈操做也是在链表的头部,也就是前部实现的。
第五周
错题一:
错题一解析:这道题我记得一开始我也想选A来着,知识不知道后来莫名其妙的选择了B。
本周主要学习了列表,在个人认知中,列表就是包括链表和数组。通过了这么长时间的打磨历练,好像数组与链表的知识都已经掌握了,听老师说后面的束河图就要利用链表和数组方面的知识,不知道还要通过多少次考验。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 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串行化问题