持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情
前言
已经总结了线性表、数组、树等等数据结构,今天来到的图的部分。图这一种数据结构知识十分的多,而且也很重要,可能要多总结几天。
术语
在学习图之前,一定要读懂图的术语,图的术语十分多,这里我就不一一列举,只挑一些关键的说明:
- G=( V, E ) V是G的顶点集合,是有穷非空集;E 是G的边集合,是有穷集。
- 有向图无向图:这个根据意思也能推测出来。
- 稀疏图稠密图
- 网络:即边上带权的图。其中权是指每条边可以标上具有某种含义的数值(即与边相关的数)
还有很多术语我们在实际应用中了解
图的存储结构
特点:非线性结构(m:n)
邻接矩阵(数组)表示法
建立一个顶点表(记录各个顶点信息)和一个邻接矩阵(表示各个顶点之间关系)
例如:无向图的邻接矩阵
由上图我们可以发现:
- 无向图的邻接矩阵是对称的
- 无向完全图的邻接矩阵中,对角元素为0,其余全1
例如:有向图的邻接矩阵
邻接表(链式)表示法
对每个顶点vi 建立一个单链表,把与vi有关联的边的信息(即入度或 出度边)链接起来,表中每个结点都设为3个域,如下图所示:
由上图可以看出,邻接表表示法,需要将每个节点列在前面,并存储它的信息,在后面跟上与它相连的节点的信息。
例如:无向图的邻接表
有向图的邻接表需要使用两个表,分别代表出边和入边,其余与无向图的邻接表相同,这里就不过多描述。