数据结构—图的基础知识

96 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

前言

已经总结了线性表、数组、树等等数据结构,今天来到的图的部分。图这一种数据结构知识十分的多,而且也很重要,可能要多总结几天。

术语

在学习图之前,一定要读懂图的术语,图的术语十分多,这里我就不一一列举,只挑一些关键的说明:

  1. G=( V, E ) V是G的顶点集合,是有穷非空集;E 是G的边集合,是有穷集。
  2. 有向图无向图:这个根据意思也能推测出来。
  3. 稀疏图稠密图
  4. 网络:即边上带权的图。其中权是指每条边可以标上具有某种含义的数值(即与边相关的数)

还有很多术语我们在实际应用中了解

图的存储结构

特点:非线性结构(m:n)

邻接矩阵(数组)表示法

建立一个顶点表(记录各个顶点信息)和一个邻接矩阵(表示各个顶点之间关系)

例如:无向图的邻接矩阵

image.png

由上图我们可以发现:

  1. 无向图的邻接矩阵是对称的
  2. 无向完全图的邻接矩阵中,对角元素为0,其余全1

例如:有向图的邻接矩阵

image.png

邻接表(链式)表示法

对每个顶点vi 建立一个单链表,把与vi有关联的边的信息(即入度或 出度边)链接起来,表中每个结点都设为3个域,如下图所示:

image.png

由上图可以看出,邻接表表示法,需要将每个节点列在前面,并存储它的信息,在后面跟上与它相连的节点的信息。

例如:无向图的邻接表

image.png

有向图的邻接表需要使用两个表,分别代表出边和入边,其余与无向图的邻接表相同,这里就不过多描述。