有向图,顾名思义,就是有方向的图,这点就是和无向图最大的区别,那么今天我们来讨论一下有向图的邻接矩阵和邻接表究竟有什么区别。
首先是无向图
图一
如图所示,这张图就是一张无向图,画得有点不好看,先容忍一下了,我们要写出这张无向图的邻接矩阵和邻接表,那么我们首先来看看邻接矩阵和邻接表的概念。
邻接矩阵:邻接矩阵是表示顶点之间相邻关系的矩阵,分为两部分V和E,用一堆数组来存放图中的所有数据。
图二
如图所示,就是无向图的邻接矩阵,A到A的距离是0,然后像A到E的距离没法计算,我就用无穷∞这个符号来表示了。
接下来是邻接表。
邻接表:是顺序分配和链式分配相结合的存储结构,对于无向图来说,容易出现数据冗余。
图三
如图所示,这就是无向图的邻接表,容易出现数据冗余,因为可以发现,表头结点A所指链表中存在一个指向B的表结点时,表头节点B所指链表也会存在一个指向A的表结点。
接下来我们来看看有向图的邻接矩阵和邻接表。
图二
如图所示,这是一张有向图,我们来看看这张有向图的邻接矩阵和邻接表应该怎么画。
首先我们要确定一点,B到A的距离为2,但是A是到不了B的,那显然就走0即可。
所以可以得到:
图五
如图所示,给出该有向图的邻接矩阵。
接下来我们来看该有向图的邻接表。
图六
如图所示,这就是该有向图的邻接表。
最后做个总结,邻接矩阵和邻接表并不是很难,关键在于我们要认真分析,仔细一点,就不大容易做错了,而且要考虑周全。