第六章主要学习了:图
图的存储方式学了邻接矩阵和邻接表。
邻接矩阵就是二维数组
邻接表有三个结构:1:头结点,有data和指向第一个结点的指针,后面就是它连接的结点。2:结点,data和next指针。3:头结点集合成表,头结点【N】边数【】点数【】
邻接矩阵优点:
1。易判断两点是否有边
2。易计算点的度
缺点:
1。难增加,删除点
2。空间利用率低(二维数组关于对边对称,一条边要算两次)
邻接表优缺点和邻接矩阵相反。
图的遍历学了深度优先搜索 (DFS),广度优先搜索 (BFS)。
大概思路:DFS(递归):从开始算一个是一个,算到重复就原路退回,返回过程判断,如果有没重复的继续算一个是一个。
BFS(队列):从开始辐射型扩散
为了防止不是连通图,设置布尔类型点数组从开始到最后遍历一次,出现的点=true
图的应用:最小生成树,最短路径
最小生成树:有普里姆 (Prim) 算法和克鲁斯卡尔 (Kruskal) 算法
Prim:从开始连接最小w(权值)的点,每引入一个点比较已连点和未连点的w,连接最小w,直至全连。
Kruskal:在不构成回路的情况下总是连接w最小的两点。
最短路径:就是计算起点到各点的最短路径。从开始v连接最小w(权值)的点v1,v1的最小就是w,计算v到v1所连的点的w和,比较原来v到其他的w,选择小的更新它们的路径关系,直到最后。
原文:https://www.cnblogs.com/wxhcc/p/13127395.html