图的基本介绍和表示方式

图的基本介绍

1、为什么要有图这个数据结构?

我们还学习过线性表(数组、队列、链表和栈)和树,但是我们可以发现,线性表局限于一个直接前驱(就是只能有唯一一个前面的结点)和一个直接后继的(唯一一个后面的结点)关系。树也只能有一个直接前驱也就是父节点。
但是当我们如果想要表示多对多的关系时,前面所学习的数据结构就不能满足我们的需求了,这时候我们就需要图这个数据结构

2、图的举例说明

图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:
在这里插入图片描述

3、图的常用概念

  1. 顶点(vertex):图的每个结点就是顶点,例如:B
  2. 边(edge):图中两个顶点之间的线就叫做边,例如:A和B之间的连线
  3. 路径:路径就是从某个顶点到另一个顶点索要经过的所有顶点,例如从 D -> C 的路径有:①D->B->C ② D->A->B->C
  4. 无向图:就是两个相邻顶点间没有指明方向,例如:可以从B到A,也可以从A到B在这里插入图片描述
  5. 有向图
    在这里插入图片描述
  6. 带权图:例如下图中两顶点中的权就是两地的距离

在这里插入图片描述

图的表示方式

图的表示方式有两种:二维数组表示(邻接矩阵);链表表示(邻接表)。

邻接矩阵

案例
在这里插入图片描述

解释说明

二位数组中的0表示的是两节点之间不能直接连通,1表示能直接连通

邻接表

  1. 邻接矩阵需要为每个顶点都分配n个边的空间,其实有很多边都是不存在,会造成空间的一定损失.
  2. 邻接表的实现只关心存在的边,不关心不存在的边。因此没有空间浪费,邻接表由数组+链表组成

在这里插入图片描述

posted @ 2021-04-15 09:18  谢海川  阅读(399)  评论(0编辑  收藏  举报