邻接表/邻接矩阵

来源:互联网 发布:有什么听书软件 编辑:程序博客网 时间:2024/05/16 19:29

邻接表


一、邻接表

邻接表是图的一种链式存储结构

邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点Vi的边(对有向图是以顶点Vi为尾的弧)。

二、无向图的邻接表


三、有向图的邻接表和逆邻接表

(一)在有向图的邻接表中,第i个单链表链接的边都是顶点i发出的边。

(二)为了求第i个顶点的入度,需要遍历整个邻接表。因此可以建立逆邻接表。

(三)在有向图的逆邻接表中,第i个单链表链接的边都是进入顶点i的边。


四、邻接表小结

◆ 设图中有n个顶点,e条边,则用邻接表表示无向图时,需要n个顶点结点,2e个表结点;用邻接表表示有向图时,若不考虑逆邻接表,只需n个顶点结点,e个边结点。

◆ 在无向图的邻接表中,顶点vi的度恰为第i个链表中的结点数。

◆ 在有向图中,第i个链表中的结点个数只是顶点vi的出度。在逆邻接表中的第i个链表中的结点个数为vi的入度。

◆ 建立邻接表的时间复杂度为O(n+e)。

邻接矩阵

       逻辑结构分为两部分:V和E的集合。因此,用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系(边或弧)的数据,这个二维数组称为邻接矩阵。邻接矩阵又分为有向图邻接矩阵和无向图邻接矩阵。

无向图的邻接矩阵一定是对称的,而有向图的邻接矩阵不一定对称。因此,用邻接矩阵来表示一个具有n个顶点的有向图时需要n^2个单元来存储邻接矩阵;对有n个顶点的无向图则只存入上(下)三角阵中剔除了左上右下对角线上的0元素后剩余的元素,故只需1+2+...+(n-1)=n(n-1)/2个单元。
      无向图邻接矩阵的第i行(或第i列)非零元素的个数正好是第i个顶点的度。
有向图邻接矩阵中第i行非零元素的个数为第i个顶点的出度,第i列非零元素的个数为第i个顶点的入度,第i个顶点的度为第i行与第i列非零元素个数之和。用邻接矩阵表示图,很容易确定图中任意两个顶点是否有边相连。


0 0
原创粉丝点击