目录
下一篇:图的基本操作与遍历
一、十字链表存储
注:A->B ,其中B是弧头,A是弧尾
例子:
即:顶点结点中绿色色块代表由某条弧指向另一个顶点
橙色色块代表被某个顶点指向
弧结点中下面的色块,绿色代表都是同一个弧尾也即是同一个顶点指向其他顶点,橙色部分代表都指向同一个顶点
重点还是看弧结点中上面的色块很明显的表示了由哪个顶点指向哪个顶点,找某个顶点的出度就是从绿色色块出发,入度就是从橙色色块出发
只能存储有向图
空间复杂度O(|V|+|E|)
邻接矩阵存储无向图,会出现时间复杂度高O(|V|^2)
邻接表存储会出现每条边都有两份冗余信息,删除顶点、边等操作时间复杂度高
于是有:
二、邻接多重表存储无向图
例子:
构造顺序:先找A邻接的所有顶点,并构造边结点,再依次构造BCDE,已有的边不用重新构造,例如在处理B时的边BA直接将B指向已有的AB边,左右无所谓因为是无向边
删除一个边结点也很容易,只需要把橙色和绿色指向它们各自的下一个结点即可
删除顶点,需要删除与该顶点相连的所有边结点,并把指向这些边结点的指针全部赋值为空
空间复杂度
O(|V|+|E|)
注:只适用于无向图