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

教材学习内容总结

19.0 概述

  • 本章是在讲图及它的特殊用途
  • 讨论有向图和无向图

19.1 无向图

  • 无向图中,表示边的顶点对是无序的
  • 如果图中的两个顶点之间有边连接,则称它们是邻接的
  • 路径是图中连接两个顶点的边的序列
  • 第一个顶点和最后一个顶点相同且边不重复的路径称为环

19.2 有向图

  • 在有向图中,边是顶点的有序对
  • 有向图中的路径是连接图中两个顶点的有向边的序列

19.3 带权图

  • 图的每条边上都有对应的权值的图称为带权图

19.4.1 遍历

  • 图的遍历一般有两种:类似树的层序遍历的广度优先遍历;类似树的先序遍历的深度优先遍历
  • 利用队列管理遍历过程,用迭代器得到结果

19.4.2 测试连通性

  • 如果图中任意两个顶点间都有路径相连,则为连通图。这个定义对无向图和有向图都成立
  • 当且仅当从任意顶点开始的广度优先遍历中得到的顶点数等于图中所含有的顶点数时,图是连通的。

19.4.3 最小生成树

  • 生成树是包含图中所有顶点及图中部分(可能不是全部)边的一棵树
  • 最小生成树是其所含边的权值之和小于等于图的任意其他生成树的边的权值之和的生成树

19.5.1 邻接表

  • 邻接列表是一种特殊的链表,它有点像解决哈希排序地址冲突时用的中的链地址法。对于无向图而言,一条边会同时出现在边两边的两个顶点的邻接列表中。对于加权图而言,每条边还会存储一个值代表该边的权重。

19.5.2邻接矩阵

  • 邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于n个顶点的图而言,该图的邻接矩阵有n行n列,每一个点代表了两个顶点之间的一条边。对于无向图,如果A1和A2之间有一条边,那么在二维矩阵中,[A1,A2]和[A2,A1]处的值为1。对于有向图,如果A1和A2之间有且仅有一条A1指向A2的边,那么[A1,A2]处的值为1,[A2,A1]处的值为0。对于加权图,把相应位置的1换成权值即可。

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

问题1:图要如何通过代码来进行实现呢?

问题1解决方案:

根据课本P423页的内容,目前实现图的代码方式是通过邻接表、邻接矩阵的方式。这两种方式(尤其是邻接矩阵)就是二维数组,而我们在C语言当中已经接触过二维数组。在这里,二维数组的每个位置表示图中两个顶点的交叉点,并且通过一个布尔型变量来判断两个顶点是否邻接。顶点和顶点之间的连线(边)的实现方式承袭的是用数组实现树的方式。

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

问题1:书本上的代码没有集合成为一个类,都是分散的,直接放在一起也会报错。

问题1解决方案:
课本上给出的只是其中的几个关键方法,而并不是完整的类。而且考虑到使用泛类的情况,我们可以不用直接使用课本上的代码,而是根据课本上

代码托管(https://gitee.com/li_jinquan/ljq/tree/master/Chart19

上周考试错题总结

点评过的同学博客和代码

本周结对学习情况
20182311

感悟

本周事情比较多,学习时间不足,需要及时调整,花更多时间和精力去调整。下周开始要刻意训练自己的动手能力,多敲代码多看书。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 1000/1500 2/4 18/38
第五周 1500/2000 3/7 22/60
第六周 2335/3000 2/4 28/40
第七周 3050/4000 2/4 18/40
第八周 4223/5000 2/4 18/36
第9周 5330/5000 2/4 30/60
第10周 6700/5000 2/4 30/60

参考资料

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

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

原文地址:https://www.cnblogs.com/lijinquan/p/11963435.html

时间: 2024-08-02 00:04:23

20182335 2019-2020-1 《数据结构与面向对象程序设计》第十周学习总结的相关文章

《数据结构与面向对象程序设计》第四周学习总结

20182304 2019-2020-1 <数据结构与面向对象程序设计>第四周学习总结 教材学习内容总结 1.本章我们学习了使用并编写我们自己的类:类中有与类同名的构造方法,也可以有set,get,toSring与自己定义的方法.实例化一个对象,可通过该对象使用类里的所有方法.实例数据是每次创造一个实例后自动生成新的内存空间的变量 2.uml类图 :每个类可能包含三部分内容:类名.属性.操作(方法).UML类图有属于自己的语法,变量的类型名在变量名的后面,它们之间用冒号作为分隔符,方法的+和-

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

20182306 2019-2020-1 <数据结构与面向对象程序设计>第五学习总结 教材学习内容总结 尽量简单的总结一下本周学习内容 尽量不要抄书,浪费时间 看懂就过,看不懂,学习有心得的记一下 教材学习中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码调试中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码托管 (stat

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

教材学习内容总结 1.继承的基本语法与用法. 2.利用UML类图表示继承关系. 3.在具体编写类的时候,先是数据声明再是方法声明. 4.toString方法用println或print或字符串连接会自动调用. 5.每创建一个对象.都会为类中声明的变量建立新的内存空间. 6.UML图一些基础使用方法. 7.对象应该是自管理的,既对象的实例数据应该仅由该对象来修改,这就构成了封装. 代码调试中的问题和解决过程 问题1:测试代码出现错误 问题1解决方案:junit的方法名必须是textxxx或xxxt

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

教材学习内容总结 1.编写类与方法(构造方法的结构和用途) 2.实际参数与形式参数.public与private.return与void的区别与含义. 3.UML类图的含义与形式 4.静态类(Math类)静态变量.静态方法 5.类间关系(依赖关系.聚合关系.继承关系) 6.接口的使用,能够在某个类中实现接口的方法(Comparable.Iterator) 7.软件活动开发.方法设计.方法重载.测试(黑盒测试.白盒测试) 教材学习中的问题和解决过程 问题1:toString与return返回的值的

201621123041java程序设计第十周学习总结

1. 本周学习总结 2. 书面作业 1. 常用异常 1.1 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 最频繁的错误包括ArrayIndexOutOfBoundsException(数组越界). NullPointerException(空指针).ClassCastException(强制类型转换错误).IllegalArgumentException(非法参数),以上异常都不需要捕获,都属于uncheckedException. 1.2 什么样的异常要求用户一定要

20182327 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182327 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名:赵天昊 学号:20182327 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证. 2. 实验过程及结果 不多说,上

20182319《数据结构与面向对象程序设计》实验二报告

20182319 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 彭淼迪 学号:20182319 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,用规定方法测试验证. 2. 实验过程及结果

# 20182331 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182331 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 高宽让 学号:20182331 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证.(https://www.cnb

20182330 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182330 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 魏冰妍 学号:20182330 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 编写简单的计算器,完成加减乘除模运算. 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. 编写测试代码,测试验证. 2. 实验过程及结果 编写简单计算器,借鉴c语言语法

20182311 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182311 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 冷冲 学号:20182311 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证.(https://www.cnbl