【数据结构算法】图(二):存储结构(邻接矩阵)

用两种结构表示图的顶点和边(弧)

顶点:因为不区分大小、主次,所以用一个一维数组来存储。
边(弧度):边和弧度是顶点与顶点之间的关系,因此我们用二维数组来存储。

因此: 图的邻接矩阵是用两个数组来表示图。一个一维数组存储图中顶点信息。一个二维数组(我们称为邻接矩阵)存储图中的边或弧信息。

无向图

想要知道某个顶点的度,其实就是统计一下邻接矩阵中该顶点所在行或者列的1的个数。
想要知道顶点Vi的所有邻接点就是将矩阵中第i行元素扫描一遍,那么array[i][j]为1的就是邻接点了。

【数据结构算法】图(二):存储结构(邻接矩阵)

有向图

所以如下图所示,顶点数组vertex[4] = {V0,V1,V2,V3},弧数组arc[4][4]也是一个矩阵。因为是有向图,所以该矩阵不像无向图那样对称。
对于有向图的邻接矩阵而言,顶点V1的入度为1,正好是第V1列各个数字之和。顶点V1的出度为2,正好是V1行各个数字之和。
【数据结构算法】图(二):存储结构(邻接矩阵)