您的位置:首页 > 理论基础 > 数据结构算法

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

2017-11-04 20:09 549 查看

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

教材学习内容总结

堆的概念以及相关方法的实现

自己实现最大堆的findMax方法,即获取堆的根元素

利用堆进行排序:将一组元素插入最大堆中,再依次删除最大元素(也就是根元素),即可得到这组元素的降序排列;类似地,可用最小堆得到升序排列

优先队列:根据优先级进行排序,若优先级相同,则遵从FIFO的规则

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

问题1:教材上的
PriorityQueue
,找不到addElement方法和removeMin方法



问题1解决方案:


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

//-----------------------------------------------------------------

//  Removes the next highest priority element from this queue and

//  returns a reference to it.

//-----------------------------------------------------------------

我判断这里应该是用removeMax。改了之后才符合注释的描述



问题2:之前问题1的两个方法改完后,还有问题



问题2解决方案:


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




加上之后就 没问题了


代码托管



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

上周考试错题总结

错题1及原因,理解情况

错题2及原因,理解情况

结对及互评

本周结对学习情况

20162325

结对学习内容

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

学习哈夫曼树

思考

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

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周0/01/110/10
第二周0/00/115/25
第三周721/7213/415/40
第四周0/7211/515/55
第五周1234/19551/616/71
第六周0/19553/920/91
第七周1474/34292/1124/115
第八周1010/44392/1325/140
第九周2409/68481/1422/162
计划学习时间:25小时

实际学习时间:22小时

改进情况:还要多花时间,加强学习

参考资料

《Java程序设计与数据结构教程(第二版)》

《Java程序设计与数据结构教程(第二版)》学习指导
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐