# 图的表示方式
有两种:
- 二维数组表示:邻接矩阵
- 链表表示:邻接表
# 邻接矩阵
邻接矩阵是表示图形中 顶点之间相邻关系 的矩阵,对于 n 个顶点的图而言,矩阵的 row 和 col 表示的是 1....n
个点
上图是一个无向图,它用矩阵表示如右图:
- 左侧的 0~5 表示顶点(也就是列,竖看)
- 横着的 0 -5 表示,左侧的顶点,与其他顶点的关系
比如:0,0
的值为 0,则表示 不能直连 ,0-1
的值为 1,表示可用直连。
# 邻接表
由于邻接矩阵有一个缺点:它需要为每个顶点都分配 n 个边的空间,其实有很多边都是不存在的(比如上面的 0,0 不链接,也需要表示出来),这 会造成空间的一定损失。
而 邻接表 的实现只关心 存在的边,因此没有空间浪费,由 数组 + 链表组成。
如上图:
左侧(竖向)表示了有 n 个点,用数组存放。
右侧每一个点,都有一条链表,表示:顶点与链表中的点都可以直连
注意:它并不是表示可以从 1 到 2 到 3 的 路径,只表示与链表中的点可以直连。