注:这一节我学习的时候,其实没太区分存储结构。我就把邻接矩阵;邻接表;邻接多重表;十字链表这四个当成算法去学习。明白各自的规则即可。
不足:一轮的时候,各自割裂的学习,没有把四个进行横向比较学习,导致了可能会出现有综合性质的题目判断不正确,故在二轮的时候,要将这四个纵向进行比较。一轮回顾的时候也可以做做大题,对知识点的理解也有好处。
而且我发现题目的重点就有,将这四种方法的区分。
1.四种方式的比较
上面的纵向比较的方式,我在一轮复习的时候,没有太注意,二轮的时候一定要捡起来,强化
2.结论(非常重点)
对于图的邻接矩阵;邻接表;做题时考察的比较其唯一性。
注:图的邻接矩阵只和顶点数相关和实际的边数无关。
3.四种类型
3.1邻接矩阵法
表示方式:
思考下面问题:
易混:出度和入度方式,
代码分析:(一轮的时候没有注重,二轮要熟练)
3.2邻接表法
基本思想:用顺序表来存储图中顶点的信息,称为顶点表。为每个顶点建立一个单链表来存储边的信息,称为该结点的边表(对于有向图为出边表)。这种数组和链表相结合的存储方法称为邻接表。
这时候可以回忆(树的知识)孩子表示法
重点:两者交叉对比
拓展:结合上一节所说的有向图和无向图进行比较
3.3十字链表
简单区分
基本概念
性能分析(有点忘了)要看视频回顾
3.4邻接多重表
基本思想:邻接多重表是无向图的一种链式存储结构,是对邻接表法存储无向图的一种优化,为了解决在邻接表中对边执行删除等操作时,需要分别在两个顶点的边表中遍历,效率较低。
可见,邻接表中同一条边用两个边表结点表示,邻接多重表中同一条边只用一个边表结点表示。邻接多重表中所有依附于同一个顶点的边在同一个链表中,因为一条边依附两个顶点,所以每个边结点同时链接在两个链表中,这正是多重的含义。
一些基本概念:
两者对比:(注意区分所描述的对象)
图示: