20162311 2017-2018-1 《程序设计与数据结构》第九周学习总结

20162311 2017-2018-1 《程序设计与数据结构》第九周学习总结

教材学习内容总结

  • 堆的概念以及相关方法的实现
  • 本身实现最大堆的findMax方法,即获取堆的根元素
  • 利用堆进行排序:将一组元素插入最大堆中,再依次删除最大元素(也就是根元素),便可获得这组元素的降序排列;相似地,可用最小堆获得升序排列
  • 优先队列:根据优先级进行排序,若优先级相同,则听从FIFO的规则

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

  • 问题1:教材上的PriorityQueue,找不到addElement方法和removeMin方法
  • 问题1解决方案:html

    出错的方法都是super调用的父类的方法,而这个类是继承了LinkedMaxHeap类, 我去查找LinkedMaxHeap类,发现它有add方法,我想应该是书上代码有误,并且按照注释的意思这个addElement和add的功能应该是同样的,因此我将其改为了add,这样就没问题了;而removeMin(),在LinkedMaxHeap中只有removeMax()方法,我又看了下注释,git

    //-----------------------------------------------------------------
    
        //  Removes the next highest priority element from this queue and
    
        //  returns a reference to it.
    
        //-----------------------------------------------------------------

    我判断这里应该是用removeMax。改了以后才符合注释的描述数据结构

  • 问题2:以前问题1的两个方法改完后,还有问题
    学习

  • 问题2解决方案:this

询问老师,老师说在命令行下编译,看看结果。我试着在命令行下编译,发现它提示错误出在PriorityQueueNode类中,因而我打开PriorityQueueNode类,发现它实现了Comparable接口,用到了泛型,把比较的类型设为PriorityQueueNode类型,漏了一个<T>

加上以后就 没问题了加密

代码托管


(statistics.sh脚本的运行结果截图)命令行

上周考试错题总结

  • 错题1及缘由,理解状况
  • 错题2及缘由,理解状况

结对及互评

本周结对学习状况

  • 20162325设计

  • 结对学习内容调试

    • 教结对伙伴完成哈夫曼树的解码
    • 学习哈夫曼树

思考

本周主要学习了堆、优先队列和哈夫曼树,包括实现哈夫曼树,用哈夫曼树进行加密解密等等,学完以后,对于树结构的认识又加深了一些。我的感受非线性结构应该比线性结构要用的多以写,应为不少实际问题并不必定能抽象成线性的,因此非线性结构也应当学习的更深刻,方便咱们之后解决实际问题code

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 10/10
第二周 0/0 0/1 15/25
第三周 721/721 3/4 15/40
第四周 0/721 1/5 15/55
第五周 1234/1955 1/6 16/71
第六周 0/1955 3/9 20/91
第七周 1474/3429 2/11 24/115
第八周 1010/4439 2/13 25/140
第九周 2409/6848 1/14 22/162
  • 计划学习时间:25小时

  • 实际学习时间:22小时

  • 改进状况:还要多花时间,增强学习

参考资料

相关文章
相关标签/搜索