问题:为何用数组实现列表时没有用环形数组,与用数组实现队列时有何区别?html
问题解决方案:经过研读课本得知。首先对于非环形数组数组实现队列假定队列的首元素老是存储在数组的索引0处,因为队列处理会影响该集合的两端,所以在删除元素时,该策略要求移动元素,使得dequeue操做的复杂度为O(n),数组实现的操做选使得效率低,而把数组看作环形的,能够去除在队列的数组实现中把元素位移的须要。而对于使用数组实现列表,通常的列表也能够从两端添加和删除元素,可是它们还有从列表中间插入或删除元素,所以没法避免要移动元素,也可使用环形数组方法,可是当从列表中间插入或者删除元素,仍然须要移动元素,于是使用环形数组就显得没有必要了git
问题1:用数组实现的有序列表类在测试时出现以下错误:
报错代码以下:
数组
问题1解决方案:刚开始我觉得是个人数组实现的有序列表里的add方法有问题,通过单步调试发现是由于我既加入了int型对象,又加入了String型对象,而该add方法可以进行排序的前提是全部的添加对象都是可比较的同一类型的对象,改正事后的测试类及运行结果截图以下:
数据结构
问题2:pp6.17运行测试类时发现contain方法含有空指针异常,运行结果以下:
错误contain方法以下:
学习
问题2解决方案:通过单步调试发现是逻辑上的错误形成的,在判断是否含有时应该首先判断是否为空,初步修改后仍有空指针错误,报错代码以下:
再经单步调试发现一样是逻辑错误,在获得元素前首先应该判断是否为空,最终修改后正确的contain方法以下:
测试
错题1:
.net
理解:定义良好的接口掩盖了集合的实现设计
错题2:
3d
理解:继承的变量和方法能够在派生类中使用,就好像它们是在本地声明的同样。指针
错题3:
理解:公共功能应该在合理的类层次结构中尽量高而不是尽量低,以最小化维护工做
错题4:
理解:实现基于数组的堆栈的最有效方法是将堆栈的底部而不是保持在数组的0位置
错题5:
理解:对象引用变量可用于建立链式结构
错题6:
理解:堆栈的连接实现从链表的front进行
遇到细节问题时不要毛躁,要冷静分析,慢慢寻找错误,有助于问题的解决!!!!
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 4/4 | |
第二周 | 464/464 | 1/2 | 10/14 | 理解掌握了用数组和链表实现栈的方法 |
第三周 | 494/958 | 1/3 | 10/24 | 理解掌握了用数组和链表实现队列的方法 |
第四周 | 1629/2587 | 2/5 | 20/44 | 对用链表和数组实现列表进行了学习 |
计划学习时间:15小时
实际学习时间:20小时
改进状况:继续强化代码编写能力!!