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小时
- 改进情况:期末安卓大作业小程序已经抬上了日程,为此必须要提高效率,给小程序的开发提供足够的程序,于是要尽快地完成常规作业。
参考资料
原文地址:https://www.cnblogs.com/77599aa/p/11914858.html
时间: 2024-10-08 01:05:22