这一章里主要学习了图的相关内容。

定义:由顶点(V)和边(E)的集合组成——分为有向图和无向图

存储结构:邻接矩阵——适用于稀疏图、顶点较多

                  邻接表——适用于稠密图、顶点较少或不需要记录权值

图的遍历:深度优先搜索(DFS)——类似于先序遍历 

                  广度优先搜索(BFS)——类似于层次遍历

图的应用:最小生成树:Prime算法

                                        Kruskal算法

                  最短路径:单源最短问题

                                    多源最短问题

 

第六章作业:

7-1 列出连通集 (30分)
 

给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。

输入格式:

输入第1行给出2个整数N(0)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。

这道代码题思路是很容易理解,但有一个需要注意的地方就是,由于辅助数组visited定义的是 全局变量,所以在DFS遍历之后,要将visited归零,才能继续BFS遍历,而全局变量的修改并不像局部变量那样简单,上网查了之后,发现应该这样修改:memset(visited, false, sizeof(visited));这一点是特别需要注意的。

这一章学起来感觉有点困难,需要一定的空间想象能力,一般都会将图和矩阵或者表结合来看,才方便做题,如果题目没有给全两者的话,理解起来就会比较麻烦,归根到底还是学的不扎实的原因,希望能把书上的知识点和题目都理解透,继续提高写代码的能力。