# 图的表示方式

有两种:

  • 二维数组表示:邻接矩阵
  • 链表表示:邻接表

# 邻接矩阵

邻接矩阵是表示图形中 顶点之间相邻关系 的矩阵,对于 n 个顶点的图而言,矩阵的 row 和 col 表示的是 1....n 个点

image-20210101152944505

上图是一个无向图,它用矩阵表示如右图:

  • 左侧的 0~5 表示顶点(也就是列,竖看)
  • 横着的 0 -5 表示,左侧的顶点,与其他顶点的关系

比如:0,0 的值为 0,则表示 不能直连0-1 的值为 1,表示可用直连。

# 邻接表

由于邻接矩阵有一个缺点:它需要为每个顶点都分配 n 个边的空间,其实有很多边都是不存在的(比如上面的 0,0 不链接,也需要表示出来),这 会造成空间的一定损失

邻接表 的实现只关心 存在的边,因此没有空间浪费,由 数组 + 链表组成

image-20210101153834105

如上图:

  • 左侧(竖向)表示了有 n 个点,用数组存放。

  • 右侧每一个点,都有一条链表,表示:顶点与链表中的点都可以直连

    注意:它并不是表示可以从 1 到 2 到 3 的 路径,只表示与链表中的点可以直连。