[总结]数据结构真是博大精深(三)

本文详细介绍了图的多种数据结构,包括邻接矩阵、邻接表、有向图的十字链表和无向图的邻接多重表。讨论了图的遍历、连通性、生成树、最小生成树、最短路径算法,以及有向无环图的拓扑排序和关键路径。还涵盖了相关操作,如邻接矩阵和邻接表的创建、删除边、增加顶点等。
摘要由CSDN通过智能技术生成

数据结构学习提纲

(最终解释权归原作者所有,侵权必究)


1、【概念】图的定义及基本术语

是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G=(V,E),G表示一个图,V是图G中的顶点的集合,E是图G中顶点之间边的集合。在图中,顶点个数不能为0,但可以没有边

结点:图中的顶点。结点间的关系:图中的连线。无向图:图中两个顶点的连线是不带方向的边,边(v,m)表示v与w互为邻接点,或说边(v,w)依附于顶点v,w,或称边(v,w)和顶点v,w相关联。v的度:和v相关联的边的数目。有向图:图中两个顶点的连线是带方向的边(称为弧),弧可以赋予有意义的值,称为权。对于弧<v,w>,称v为弧尾,w为弧头;即顶点v邻接到顶点w,或称顶点w邻接自顶点v;或称弧<v,w>和顶点v,w相关联。v的入度:以v为弧头的弧的数目。v的出度:以v为弧尾的弧的数目。v的度:v的入度与出度之和。路径:在无向图G=(V,E)中,从顶点vp到顶点vq之间的路径是一个顶点序列(vp=vi0,vi1,vi2,…,vim=vq),其中,(vij-1,vij)∈E(1≤j≤m)。若G是有向图,则路径也是有方向的,顶点序列满足< vij-1,vij >∈E。路径长度:如果是无向图,路径上边的数目是路径长度;如果是有向图,弧上有权,路径长度为路径上的权值之和,弧上无权,路径上弧的数目是路径长度。简单路径:指路径序列中顶点不重复出现的路径。简单回路:指路径序列中的第一个顶点和最后一个顶点相同的路径,而其他顶点都不相同。子图:若图G=(V,E),G’=(V’,E’),如果V’包含于V,且E’包含于E,则称图G’是G的子图。

2、【概念】图的分类

 ⑴ 根据边的方向性、边上是否有权:有向图无向图有向网无向网。

⑵ 根据边(弧)数e和顶点数n之间的关系可分为:无向完全图:对具有n个顶点的图,任意两个顶点vi和顶点vj都存在边(vi,vj),边数e=n(n-1)/2。有向完全图:对具有n个顶点的图,任意两个顶点vi和顶点vj,存在弧<vi,vj>,即边(vi,vj)和边(vj,vi)都存在,弧数e=n(n-1)。稀疏图:边(弧)数e≤nlogn。稠密图:边(弧)数e>nlogn。

3、【概念】图的连通性

⑴ 无向图的连通性

   连通性:若从顶点vi和顶点vj有路径,则称vi和vj是连通的。

   连通图:图上任意两点都是连通的。

   连通分量极大连通子图。含有极大顶点数(如果多加1个顶点,子图就不连通了)和依附于这些顶点的所有边

⑵ 有向图的连通性

   强连通性:若从顶点vi到顶点vj有路径,从顶点vj到顶点vi也存在路径,则称vi和vj是强连通的。

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

   强连通分量:极大强连通子图。

⑶ 生成树和生成森林

   生成树:极小连通子图,包含图中的全部顶点和连接全部顶点的n-1条边。如果多一条边,就会出现回路。如果减少一条边,则必然成为非连通的,生成树不一定唯一。

   生成森林:不连通的图中存在若干个连通分量,每个连通分量对应一棵生成树,这些连通分量的生成树就组成了一个非连通图的生成森林。

4、【概念】图的邻接矩阵存储类型

⑴用一个一维数组存储图中顶点的信息,用一个二维数组(称为邻接矩阵)存储图中各顶点之间的邻接关系,用两个整型变量存储图中的顶点数和边(弧)数。

⑵图的邻接矩阵定义:

typedef struct {VertexType vexs[Vnum];int arcs[Vnum][ Vnum]; int vexNum,arcNum;}MGraph;

网的邻接矩阵定义:

typedef struct{VertexType vexs[Vnum];WeightType arcs[Vnum][Vnum];intvexNum,arcNum; };

⑶邻接矩阵的特点:是一种顺序存储结构;二维数组arcs中的元素值描述了边的邻接关系及边上是否有权;无向图和无向网的邻接矩阵是对称矩阵,有向图和有向网的邻接矩阵不一定是对称矩阵;对于边(弧)个数较少的稀疏图,其邻接矩阵也稀疏,有较多的0,用二维数组存储邻接矩阵时存储空间利用率低。

⑷适合计算顶点的度,求一个点的所有邻接点插入或删除一条边(弧)。不太适合顶点的插入和删除,图的遍历等。、

5、【概念】图的邻接表表示

⑴对图中每个顶点建立一个与该顶点有邻接关系的顶点单链表用一个一维结构体数组存储顶点的值和各顶点单链表的头指针;用整型变量存储图中的顶点数边(弧)数

⑵邻接表便于求顶点的出度,不便于求顶点的入度,如果实际问题需要求顶点的入度,可以采用逆邻接表

⑶typedef struct ArcNode{int adjvex;//弧指向的顶点的位置s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值