图的表示法及定义
设图 A = (V, E)是一个有 n 个顶点的图, 图的邻接矩阵是一个二维数组 A [n][n],图的邻接矩阵表示法也称为:数组表示法
无向图的邻接矩阵是对称的; 有向图的邻接矩阵可能是不对称的。
在有向图中, 统计第 i 行 1 的个数可得顶点 i 的出度, 统计第 j 列 1 的个数可得顶点 j 的入度。
在无向图中, 统计第 i 行 (列) 1 的个数可得顶点i 的度。
无向图(n个结点)的邻接矩阵是对称矩阵,可采用压缩存储法(下三角),其存储空间至少需要n(n-1)/2个存储空间。
有向图的邻接矩阵不一定不是对称矩阵
有向图的邻接矩阵需要n^2个存储空间。
邻接矩阵的定义:
typedef char VertexData;
typedef struct{
GraphKind kind; /*图的种类标志*/
int vexnum, arcnum; /*图的顶点数和弧数*/
VertexData vertex[MAX_VERTEX_NUM]; /*顶点向量*/
ArcNode arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];/*邻接矩阵*/
}AdjMatrix;