图的存储:十字链表,邻接多重表

1.十字链表存储有向图

1.存储方式

  • 分为顶点结点和弧结点两种结构体

  • 顶点结点使用数组顺序存储,结构体包括:数据域,作为顶点弧头的第一条弧,作为顶点弧尾的第一条弧。
    图的存储:十字链表,邻接多重表_第1张图片

  • 弧结点,结构体包括:弧头相同的下一条弧(指向当前结点的弧),弧尾相同的下一条弧(当前结点指向的弧)。
    图的存储:十字链表,邻接多重表_第2张图片

2.十字链表法性能分析

  • 空间复杂度:O(|V|+|El)
  • 找顶点的所有出边:顺着绿色路线
  • 找顶点所有的入边:顺着橙色路线

2.邻接多重表存储无向图

1.存储方式

  • 邻接多重表由顶点结点和边结点组成

  • 顶点结点:使用数组顺序存储,包括数据域和指针(指向与该顶点相连的第一条边)
    图的存储:十字链表,邻接多重表_第3张图片

  • 边结点:包含两个结点的数据域和指针(分别指向当前结点的下一条边)
    图的存储:十字链表,邻接多重表_第4张图片

2.性能分析

每一条边对应一份数据,删除边和结点时可以避免冗余的数据。

  • 空间复杂度:o(|V|+|E|)
  • 删除边、删除节点等操作很方便
  • 注意:邻接多重表只适用于存储无向图

你可能感兴趣的:(数据结构与算法,数据结构,算法)