十字链表
十字链表只用于存储有向图
十字链表相当于将邻接表和逆邻接表合并而成。
画的时候以邻接表为基础,扩展结点属性成起止结点序号。再添加逆邻接表信息。
如何找到指定顶点的所有出边?——顺着绿色线路找
如何找到指定顶点的所有入边?——顺着橙色线路找
空间复杂度:O(|V|+|E|)
十字链表结构性质
顶点结点数=顶点数 弧结点数=弧的条数
求入度:从顶点Vi的firstin出发,沿着弧结点中的hlink所经过的弧结点数。
求出度:从顶点Vi的firstout出发,沿着弧结点中的tlink所经过的弧结点数。
临界多重表
邻接多重表和十字链表类似,只是其中的弧头弧尾节点概念替换为“与结点i、结点j相关联的边”,它主要是用来存储无向图的。
邻接多重表只适用于存储无向图
邻接多重表的画法是不唯一的,它的边结点的是可以随意改起点终点的。
空间复杂度:O(|V|+|E|) ----每条边只对应一份数据
总结