邻接矩阵:使用数组存储,是顺序存储,若两个点之间相互邻接,即有边对应,则在矩阵写1(无向图)
有向图则是a->b有一条对应的有向边,则在邻接矩阵写1
无向图的邻接矩阵是对称矩阵,应为一条边对应两个点
对于无向图来说,求节点的度可以将邻接矩阵的一行/一列的非零数相加起来即可求出该节点的度
有向图求出度即为行元素非0值相加,入度即为列元素非0值相加,求度即为二者相加即可
如果是用邻接矩阵求带权图,则在有边相连的那个地方填上该边的权值即可,如果不存在边,则可以在上面写个∞,代码即为INF
邻接矩阵适合存储稠密图,因为边多,浪费少
因为无向图的邻接矩阵是对称矩阵,所以可以用上三角/下三角来压缩存储
即可以用矩阵乘他本身就可以得到路径
**邻接表:**顺序+链式存储
存储无向图:因为每条边对应两个节点,所以边结点的数量是边的两倍,所以边结点冗余
而有向图则不会,一个边结点对应一条边
如何求入度:
无向图:遍历和这个点相关的边链表即可,有多少个边结点,他的度就是多少
有向图:找出度则遍历和这个点相关的边链表即可,若要找入度,则找所有节点所对应的边结点指向他的即可
图的邻接表的表示方式不唯一,但是邻接矩阵唯一