邻接表可以用来表示有向图和无向图的入度或者出度,但是要求出入度和出度效率较低,但是王道书里都没有出过邻接表的代码题(可能要求太高不考?)但是要求会还原图和画出邻接表和十字链表。
例如下题:
一开始很懵啊,为什么连完第一个相邻的结点后直接在这个结点上面直接连上了下一个相邻的结点,后面搞明白了,这个链表只是个物理结构,而非逻辑上的结构,用这个物理结构会减少内存的消耗,具体怎么求看一下上面的转化题就会了
然后是十字链表啊
十字链表是出度邻接表和入度邻接表的结合,当然在计算机中也可以定义两个邻接表分别用来表示出度邻接表和入度邻接表,但是这样的内存利用率并不高,于是引入了十字链表,用一张表来结合入度邻接表和出度邻接表。
我看了网上好多讲解的视频,全是王道里面的那一张图,而且只讲了方法,啥0连0什么的,没有原理,晦涩难以理解,这里给出原理和方法:
对于一张有向图,先画出他的顶点表,然后先按照画邻接表的方式,画出他的出度邻接表,
如下:
然后在原有的出度邻接表的基础上,画出入度的邻接表,这个过程有点困难,因为我没有给出每个结构体的定义,先给出图如下:
最后这个就是十字链表了