在理解用数组模拟邻接表存储图的方法前,首先回顾一下数据结构中用三元组顺序表存储压缩矩阵的方法
下图中每一行有三个信息分别为行下标,列下标和非零数字
每一行都会从0开始进行编号(idx)
![](https://i-blog.csdnimg.cn/blog_migrate/85f7dc75d85d19a4b97244996fe5f2f2.png)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
![](https://i-blog.csdnimg.cn/blog_migrate/4a7be8618fcd8dad2ddb5b2a7803a18d.png)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
![](https://i-blog.csdnimg.cn/blog_migrate/777c832b1164f07be6b553274599e800.jpeg)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
![](https://i-blog.csdnimg.cn/blog_migrate/0214de4bdfa18a7c42098379f4d20386.jpeg)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
类似于三元组顺序表来存边的信息
由于邻接表的每一组起点是固定的
终点(e)是变化的,
对于每一条边有三条重要的信息,一个是终点(e),其次是 下一条边(ne)最后是 权值(w)
将以上三者信息作为一行,每一行从0开始编号(idx)。
最后不要忘记每条边是有起点的,但是我们不需要存储每一条边的起点,因为边之间(每一行)已经通过next数组建立了联系,因此只需要存储每个起点的第一条出边,即h[]数组。
h数组存某节点的第一条出边。
这样通过h数组存储每一个起点,通过起点可以访问到第一条出边(某一行),第一条出边会指向下一条边(第ne[]行),这样建立了每一个起点到对应终边的关系。