4、图的存储
1)邻接矩阵法
邻接矩阵是表示顶点之间相邻关系的矩阵,
设G=(V,E)是具有n个顶点的图,则G的邻接矩阵可定义为:
A[i,j]=1, 若(Vi,Vj)或<Vi,Vj>是E(G)中的边。
A[i,j]=0, 若 (Vi,Vj)或<Vi,Vj>不是E(G)中的边。
若G是网络,则邻接矩阵可定义为:
A[i,j]=Wij 若(Vi,Vj)或<Vi,Vj>属于E(G);
A[i,j]=0或∞ 若(Vi,Vj)或<Vi,Vj> 不属于E(G);
其中,Wij表示边上的权值,∞表示一个计算机允许的,大于所有边上权值的数;
2)邻接表
对于图G中的每个结点Vi, 把所有邻接于Vi的顶点Vj链成一个单链表,这个单链表就称为顶点Vi的邻接表。
邻接表由边表和顶点两部分组成。
边表为一个单链表,每个表结点均有两个域:
① 邻接点域adjvex,存放与vi相邻接的顶点vj的序号j。
② 链域next,将邻接表的所有表结点链在一起。
顶点表为一数组,每个元素均有两个域:
①顶点域vertex,存放顶点vi的信息
② 指针域firstedge, vi的边表的头指针。
对于无向图来说,Vi的邻接表中每个表结点都对应于与Vi相关联的一条边,
对于有向图来说,Vi的邻接表中每个表结点对应于Vi为始点射出的一条边。
![](https://i-blog.csdnimg.cn/blog_migrate/99f4ef8d94a61ffa5d52e47ba952ceb0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c9e92831ca30210c2acdc77b86d4a383.png)
图5-5 图5-1中(1)图的邻接表