20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》第10周学习总结

20182308 2019-2020-1 《数据结构与面向对象程序设计》第10周学习总结

教材学习内容总结

有关于图的课堂内容:
邻接矩阵、邻接表,图的数组表示法。一个字符串上的数组就可实现数组。需要掌握。
我们简单提到了其他以下几种图:边集数组、无向图邻接表、逆邻接表、十字链表、邻接多重表(比较复杂,老师也没有讲)
图的遍历以及编码实现主要包括以下两大块的内容:前序中序后序的实现;广度优先搜索、深度优先搜索两种搜索方式的实现。

教材学习中的问题和解决过程

  • 问题1:图和树有什么区别?我们说的完全图又是什么意思?
  • 问题1解决方案:树中的每一个非根结点只能有一个父结点,而在图内就没有这种限制。图中没有所谓“根”的概念,理论上每一个结点都可以和最多n-1(假设我们有总共n个结点)个结点相连接。与“完全二叉树”相对应的概念就是图中的“完全图”,就是说有最多连线数的图。
  • 问题2:图要如何通过代码来进行实现呢?
  • 问题2解决方案:根据课本P423页的内容,目前实现图的代码方式是通过邻接表、邻接矩阵的方式。这两种方式(尤其是邻接矩阵)就是二维数组,而我们在C语言当中已经接触过二维数组。在这里,二维数组的每个位置表示图中两个顶点的交叉点,并且通过一个布尔型变量来判断两个顶点是否邻接。顶点和顶点之间的连线(边)的实现方式承袭的是用数组实现树的方式。
  • 问题3:图中的所谓“生成树”是什么东西,而什么又是“最小生成树”?
  • 问题2解决方案:课本中引入生成树的概念比较突然,但是是将图的“边”的概念和我们之前所学的“树”的概念衔接联系起来的一个方式。图的生成树就是指包含图中的所有顶点以及图中部分边的一棵树。而最小生成树就是指其所含边的权值之和小于、等于图的任意其他生成树的边的权值之和的生成树。(也可以理解为是由最优解中的边构成的树)

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

  • 问题1:书本上的代码没有集合成为一个类,而都是分散的方法,直接放在一起也会报错,应该要如何操作呢?
  • 问题1解决方案:课本上给出的只是其中的几个关键方法,而并不是完整的类。而且考虑到使用泛类的情况,我们可以不用直接使用课本上的代码,而是根据课本上的代码的思路进行拼接和改造。

代码托管

上周考试错题总结

上周没有考试。

点评过的同学博客和代码

  • 本周结对学习情况

    • 20182312
    • 结对学习内容
      • 一起学习了图是什么,无向图的绘制方法。伙伴教会了我十字邻接表的思想和画法。
  • 上周博客互评情况

其他

  这个学期的课程实际上已经渐渐靠近尾声了,除了常规的数据结构学习之外,也有相当的课程学习时间要分配在制作小程序上。但是这不意味着我们可以减少对数据结构的学习时间。尤其是这几节的内容比如图的内容,看起来很好理解,但是实际上理解总是具有偏差。课本内容不多,而且代码实现起来也不容易。越是到了这个时候,就越不应该懈怠。上课的时候也要积极动手,老师要求画图的实践也一定要认真参与。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 6000行 30篇 400小时
第一周 101/101 2/2 23/23 了解了一些Linux系统操作入门、学会了基本的JDB调试操作
第二、三周 353/441 3/5 42/67 能够基本记住Java代码编程中的格式代码。了解了一些有关方法的特殊命令(比如substring)。了解了一些有关类的基本知识。
第四周 327/768 2/7 28/95 基本已经适应IDEA的基本功能
第五周 807/1575 2/9 17/112 基本能够理解继承的作用和用法,初步了解了接口的代码原理,能够正确分析优秀同学的代码思路
第六周 1015/2590 1/10 22/134
第七周 1199/3789 3/13 42/176
第八周 825/4614 1/14 22/198
第九周 1285/6199 3/17 25/223
第十周 616/6815 3/20 27/250
  • 计划学习时间:25小时

  • 实际学习时间:27小时

  • 改进情况:期末安卓大作业小程序已经抬上了日程,为此必须要提高效率,给小程序的开发提供足够的程序,于是要尽快地完成常规作业。

参考资料

posted on 2019-11-26 23:22  20182308hlh  阅读(112)  评论(0编辑  收藏  举报

导航