图结构-学习(附自己写的源码)

多对多的数据结构-图结构

图结构的两个概念:

顶点:就像链表的节点树的子树 存数据的节点

:用来描述顶点之间的关系

如图:有6个顶点和7条边

如果边有方向叫有向图,没有则叫无向图(上面的就是)。

如图为有向图:

有向图:单行线

无向图

描述图的方式有很多种

这里搞2种:

临接表:链表

临接矩阵:数组

无向图临接表的表现如图

有向图临接表的表现如图

无向图临接矩阵如图:

是对称的,0是不可以,1是可以

有向图临接矩阵如图:

是对称的,0是不可以,1是可以,是从竖的到横的来看的,A能不能到B,A能不能到C。

特殊的图:

网图

不一样的是边有长度(权值):无限大表示自己(也可以用没有出现过的值),0表示到不了

临接表来表示的话,只需要加一个长度(权值)即可。

就比如A星寻路算法里面的f=g+h+w中的w,权值。

就比如地图是用图结构的,那么所谓的寻路算法就是遍历。

图的遍历

深度优先遍历(Depth First Search, 简称 DFS) :一路走到底,没有了在换其他周围节点

广度优先遍历(Breath First Search, 简称 BFS):先把周围遍历完,然后在向下一个搜索

而做这两个遍历,首先需要做的是两个函数:

找某个顶点的第一个相邻顶点

找某个顶点的第二个相邻顶点

源码:

猜你喜欢

转载自blog.csdn.net/q244645787/article/details/128559593