1.邻接矩阵——表示顶点间相连关系的矩阵

设图G有n (n图的三种存储结构_graph1) 个顶点,则邻接矩阵是一个n阶方阵。

当矩阵中的 [i,j] !=0(下标从1开始) ,代表其对应的第i个顶点与第j个顶点是连接的。

特点:
  • 无向图的邻接矩阵是对称矩阵,n个顶点的无向图需要n*(n+1)/2个空间大小
  • 有向图的邻接矩阵不一定对称,n个顶点的有向图需要n²的存储空间
  • 无向图中第i行的非零元素的个数为顶点Vi的度
  • 有向图中第i行的非零元素的个数为顶点 Vi 的出度,第i列的非零元素的个数为顶点 Vi 的入度


     
    图的三种存储结构_数据结构_02
     



     
    图的三种存储结构_有向图_03
     

2.邻接表

为图G中的每一个顶点建立一个单链表,每条链表的结点元素为与该顶点连接的顶点。

特点
  • 无向图顶点 Vi 的度为第 i 个单链表中的结点数
  • 无向图中
    顶点 Vi 的出度为第 i 个单链表中的结点个数
    顶点 Vi 的入度为全部单链表中连接点域值是 i 的结点个数
  • 逆邻接表:有向图中对每个结点建立以 Vi 为头的弧的单链表


     
    图的三种存储结构_数据结构_04
     



     
    图的三种存储结构_链表_05
     

邻接表与邻接矩阵的比较:




 


图的三种存储结构_数据结构_06


 


3.十字链表——适合有向图

可以看成是有向图的邻接表和逆邻接表结合起来的一种链表。




 


图的三种存储结构_graph_07


 




 


图的三种存储结构_有向图_08


 


 



作者:See是一个名字

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


作者:习惯沉淀


如果文中有误或对本文有不同的见解,欢迎在评论区留言。