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

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

教材学习内容总结

第五章 队列

  • 在任何的队列中,元素都是从一端进入,从另外一端离开
  • 队列是一种线性集合,先进先出即第一个进入的元素也是第一个退出的元素
  • 与栈相似,队列中没有操做能让用户“抵达”队列中部,一样也没有操做容许用户重组或删除多个元素
  • 队列的首要做用是保持顺序
  • 对于单向链表实现队列,可选择从末端入列,从前端出列
  • 用固定数组来实现栈的效率不高,把数组看做是环形的,能够除去在队列的数组实现中把元素位移的须要
  • 教材学习中的问题和解决过程

  • 问题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.使用以下代码将原数组里的元素复制到新数组里html

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类的测试类在运行时打印队列的方法有问题,致使打印内容呈现出乱码的形式,以下图:
    git

  • 问题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小时学习

  • 改进状况:注重动手能力!测试

参考资料

相关文章
相关标签/搜索