数据结构 —— 图

图 —— 非线性数据结构

概念:

图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。

无向图: 由没有方向的边构成的图

在这里插入图片描述

无向图中的边由顶点的无序对组成(用圆括号表示) (v2,v1) (v1,v2)表示同一条边。

邻接点: 无向图中,若存在一条边(vi,vj),则称vi和vj互为邻接点。

有向图: 由有方向的边构成的图

在这里插入图片描述

:有向图中的边由顶点的有序对组成,也称作狐。(用尖括号表示)<v1,v2> ,<v2,v1>表示不是同一条边。

图的类型:

完全图:图中任意两项点检均有边相连。

无向完全图:有n个顶点和n(n-1)/2条边的无向图。

有向完全图:有n个顶点和n(n-1)/2条弧的有向图。

子图:对于图G=(V,E)和 图G’ = (V’,E‘),若存在 G’∈ G 且 E’∈E,则称图G’是图G的子图。

顶点的度:

 无向图中,顶点的度是与每个顶点相连的边数。
 有向图中,顶点的度分成为入度和出度。
     —— 入度:以该顶点为终点的弧的数目(箭头指向的方向)。
     —— 出度:以该顶点为起点的弧的数目。

顶点V的度等于顶点V的入度和出度。

在这里插入图片描述

路径:从Vi出发,经过一系列的边或弧能够到达Vj,则称Vi到Vj所经过的顶点序列为Vi到Vj的路径。

路径长度:路径经过的边数的数目或者各边权值之和。

回路:第一个顶点和最后一个顶点相同的路径。

简单路径: 序列中不出现重复的路径。

简单回路:除了第一个顶点和最后一个顶点外,其余顶点不重复出现。

在这里插入图片描述

连通:顶点Vi到Vj有一条路径则Vi和Vj是连通的。

连通图:图中任意的两个顶点都是连通的。

连通分量:非连通图的每个极大连通子图

强连通分量:有向图中任意不同的顶点Vi和Vj,从Vi到Vj和从Vj到Vi都存在路径。

在这里插入图片描述

图的存储结构与实现:

   -邻接矩阵
   - 邻接表

邻接矩阵:

表示顶点间相联关系的矩阵:设G = (V,E)是有n ≥ 1 个顶点的图,G的邻接矩阵A是具有以下性质的n阶方阵。

在这里插入图片描述
特点:
-无向图的邻接矩阵对称
-有向图邻接矩阵不一定对成
-无向图中vi的度是邻接矩阵中第i行的元素之和

在这里插入图片描述

有向图中:
-顶点vi的出度是A中第i行元素之和。
-顶点vi的入度是A中第i列元素之和。
在这里插入图片描述

权:图中边或弧上附带的数据成为权

网:带权的图称为网。

在这里插入图片描述

邻接表

邻接表由顶点表和边表组成,是链式存储结构。

顶点表:存放图中每个顶点的信息以及指向该顶点边表的头指针。顶点表通常采用顺序存储结构。

顶点表的节点结构:
在这里插入图片描述
顶点域data存放顶点信息,head为表头指针。

边表:为图中每个顶点建立的单链表,单链表中存放与一个顶点相邻接点,相当于邻接矩阵中的一行。

在这里插入图片描述

邻接点域adjvex存放邻接点在顶点表中的序号 ,next为指向下一个邻接点的指针。

在这里插入图片描述

特点
有向图中:
—— 顶点Vi中的出度就是第i个单链表中节点的个数
—— 顶点 Vi中的入度就是邻接链表中所有邻接点值域为i的节点个数

无向图中:
—— 无向图中顶点V的度就是第i个单链表中的节点数

**

逆邻接表

结构与邻接表完全相同,只是边表中每个节点存放的是每条弧的弧尾节点。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值