20172311《程序设计与数据结构》第四周学习总结
Posted zhaoxiaohai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20172311《程序设计与数据结构》第四周学习总结相关的知识,希望对你有一定的参考价值。
20172311《程序设计与数据结构》第四周学习总结
教材学习内容总结
第六章 列表
- 列表可以使用链表或数组来实现
- 队和栈的元素只能在末端添加和删除,而列表集合更一般化,可以在列表的中间和末端添加和删除元素
- 列表可以分为有序列表、无序列表和索引列表
- 有序列表往列表添加新元素,就要查找新元素相对于所有已有元素的正确排序
- 无序列表中的元素按使用者所选择的任意方式排序
- 索引列表为它的元素维护一段连续的数字索引值
- 索引列表和数组的根本区别在于:索引列表的索引值总是连续的
- 为了使某个对象能使用串行化进行存储,其类必须实现Serializable,在Serializable接口中并没有任何方法,它只是表明该对象可以转换为串行化表示形式
- 索引列表特有的操作,可以利用其索引来很好地使用引用元素
- 只有Comparable对象才能存储在有序列表中
教材学习中的问题和解决过程
- 问题1:队列的数组实现中,环形数组是如何实现以及发挥作用的
- 问题1解决方案:
通常,一个元素入列后,rear的值要递增。但当enqueue操作填充了数组的最后一个单元时,rear的值必须设置为0,表明下一个元素应该存储在索引0处。下面的代码行将正确地更新rear的值:
rear = (rear+1)% queue.length;
- 问题2:使用环形数组实现队列中扩大数组容量的具体是如何实现的
- 问题2解决方案:
1.使用如下代码实例化一个容量为原数组两倍的数组
T[] larger=(T[]) (new Object[queue.length*2]);
2.使用如下代码将原数组里的元素复制到新数组里
for (int scan = 0; scan < count; scan++)
{
larger[scan] = queue[front];
front = (front + 1) % queue.length;
}
3.使用如下代码重新确立front指针和rear指针并将新数组再赋给原数组
front = 0;
rear = count;
queue = larger;
代码调试中的问题和解决过程
问题1:pp5.1LinkedQueue类的测试类在运行时打印队列的方法有问题,导致打印内容呈现出乱码的形式,如下图:
问题1解决方案:
经过仔细检查发现是toString()方法存在问题,再通过调试发现是红圈标注部分出现的问题,恰当改正之后问题得以解决,改正后代码及运行截图如下:
代码托管
上周考试错题总结
待定
补充作业
你认为对你特别重要的技能,记下你目前的水平,和你想在课程结束后达到的水平
我认为对我特别重要的技能 | 我目前的水平 | 我想在课程结束后达到的水平 |
---|---|---|
Comprehension(理解程序) | 能够理解一些初级代码并能够简单运用debug | 能够较好地理解复杂代码并熟练运用debug |
Design(架构设计、模块化设计、接口设计) | 能够进行简单程序的设计 | 能够对较复杂的程序进行较好的设计 |
Performance(效能分析和改进) | 基本不考虑这方面,只考虑能否正常运行 | 能够尽量提高程序的效能 |
Test(单元测试、代码覆盖率) | 单元测试基本掌握,代码的覆盖率基本不考虑 | 提高降低代码覆盖率的能力 |
BigData (大数据) | 基本不会处理大数据 | 能够较轻松的处理大数据 |
结对及互评
- 本周结对学习情况
对课本上的诸多疑问点进行了讨论,同时对代码实现过程中遇到的一些问题也通过讨论得以解决
感想
继续努力!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 4/4 | |
第二周 | 464/464 | 1/2 | 10/14 | 理解掌握了用数组和链表实现栈的方法 |
第三周 | 494/494 | 1/3 | 10/24 | 理解掌握了用数组和链表实现队列的方法 |
计划学习时间:15小时
实际学习时间:10小时
改进情况:注重动手能力!
参考资料
以上是关于20172311《程序设计与数据结构》第四周学习总结的主要内容,如果未能解决你的问题,请参考以下文章