目录
一、定义结构体
#define MaxVertexNum 100 //顶点数目的最大值
typedef struct{
char Vex[MaxVertexNum]; //顶点表
int Edge[MAXVertexNum][MaxVertexNum]; //邻接矩阵,边表
int vexnum,arcnum; //图的当前顶点树和边数/弧数
}MGraph;
对于无向图
第i个结点的度=第i行(或第1列)的非零元素个数
对于有向图
第i个结点的出度 = 第i行的非零元素个数
第i个结点的入度= 第i列的非零元素个数
第i个结点的度 = 第i行、第i列的非零元素个数之和
邻接矩阵法求顶点的度/入度/出度的时间复杂度为O(|V|)
二、邻接矩阵法存储带权图(网)
#define MaxVertexNum 100
#define INFINITY 最大的int值
typedef char VertexType;
typedef int EdgeType;
typedef struct{
VertexType Vex[MaxVertexNum];
EdgeType Edge[MaxVertexNum][MaxVertexNum];
int vexnum,arcnum;
}MGraph;
三、邻接矩阵法的性能分析
空间复杂度:O(|V|)——只和顶点数相关,和实际的边数无关
适合用于鵆稠密图
无向图的邻接矩阵是对称矩阵,可以压缩存在(只存储上三角区/下三角区)
四、邻接矩阵法的性质
设图G的邻接矩阵为A(矩阵元素为0/1),则A^n的元素A^n[i][j]等于由顶点i到顶点j的长度为n的路径的数目