图的常用存储结构
1.邻接矩阵:在图中任意两个顶点之间都有可能存在关系,邻接矩阵就是用n阶方针来保存一个顶点是否对另一个顶点有“意思”。
①无向图
在无向图中两个顶点有边连接就意味着(v0,v1)和(v1,v0)都有“关系”,即彼此“喜欢”对方。方阵的数据沿对角线对称分布。
②有向图
数据分布不对称。
③网的邻接矩阵存储:存在带权的边/弧。如果对对方有“意思”就把前边的“1”改为对应的权值即可。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
2.邻接表AdjacencyList:诞生的理由——如果图中顶点多而边/弧的数目少,即顶点之间关系不好,那么整个方针里边就存了几个“1”,显然就很是浪费存储了,邻接矩阵存储的是顶点之间的关系,从空间的使用效率来说适合用于关系比较丰富的图,前人们为了满足关系简单而“人口”众多的图的最小空间开销想啊想,于是就发明了邻接表。
这种表需要定义两个结构,一个是用来描述顶点的:用于存储顶点的数据信息和指向他“感兴趣”的第一个顶点的指针;另一个是用来描述“被感兴趣”的顶点下标,在有向图中对应的就是出度。