数据结构图的遍历与连通性参考用.ppt
《数据结构图的遍历与连通性参考用.ppt》由会员分享,可在线阅读,更多相关《数据结构图的遍历与连通性参考用.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、7.2 7.2 图的存储结构图的存储结构n图的数组图的数组(邻接矩阵邻接矩阵)存储表示存储表示n图的邻接表存储表示图的邻接表存储表示n有向图的十字链表存储表示有向图的十字链表存储表示n无向图的邻接多重表存储表示无向图的邻接多重表存储表示邻接矩阵邻接矩阵是用于描述图中顶点之间关系是用于描述图中顶点之间关系(即弧或边即弧或边的权的权)的矩阵。的矩阵。邻接表邻接表类似树的孩子链表。即对图中的每个顶点类似树的孩子链表。即对图中的每个顶点vivi建立一个单链表,表中结点表示依附于该顶点建立一个单链表,表中结点表示依附于该顶点vivi的的边或弧。边或弧。邻接点域邻接点域链域链域数据域数据域数据域数据域链域
2、链域表结点表结点表头结点表头结点V1V3V2V4例:例:4 3 2 1211134423.3.有向图的十字链表存储表示有向图的十字链表存储表示两种结点结构:两种结点结构:尾域尾域tailvextailvex头域头域headvexheadvex链域链域hlinkhlink链域链域tlinktlink信息域信息域infoinfo数据域数据域datadata链域链域firstinfirstin链域链域firstoutfirstout顶点结点顶点结点弧结点弧结点v v1 1v v2 2v v3 3v v4 4 0 1 2 3 10/20v3v1 v4v2 /03/13/2302/32例:例:datad
3、atafirstinfirstinfirstoutfirstouttailvexheadvex hlinktlink/标志域标志域边顶点边顶点i i边顶点边顶点j j链域链域i i 链域链域j j 信息域信息域数据域数据域边链域边链域4.4.无向图的邻接多重表存储表示无向图的邻接多重表存储表示边结点边结点顶点结点顶点结点1 3 4 2 例:例:1234121324第第7 7章章 图图7.1 7.1 图的定义和术语图的定义和术语7.2 7.2 图的存储结构图的存储结构7.3 7.3 图的遍历图的遍历7.4 7.4 图的连通性问题图的连通性问题7.5 7.5 有向无环图及其应用有向无环图及其应用7
4、.6 7.6 最短路径最短路径7.3 7.3 图的遍历图的遍历 从图中某一顶点出发访遍图中其余顶点,且使从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次。这一过程就叫做每一个顶点仅被访问一次。这一过程就叫做图的图的遍历遍历。通常有两条遍历图的路径:通常有两条遍历图的路径:n深度优先搜索深度优先搜索n广度优先搜索广度优先搜索1.1.深度优先搜索深度优先搜索(DFS)(DFS)基本思想:基本思想:从图中某顶点从图中某顶点V V0 0出发,访问此顶点,然后依次出发,访问此顶点,然后依次从从V V0 0的各个未被访问的邻接点出发的各个未被访问的邻接点出发深度优先搜索深度优先搜索遍遍历图,
5、直至图中所有和历图,直至图中所有和V V0 0有路径相通的顶点都被访有路径相通的顶点都被访问到;问到;若此时图中尚有顶点未被访问,则另选图中一若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点;个未曾被访问的顶点作起始点;重复上述过程,直至图中所有顶点都被访问到重复上述过程,直至图中所有顶点都被访问到为止。为止。例:例:从顶点从顶点v1v1出发,出发,DFSDFS下图。下图。顶点访问序列为:顶点访问序列为:v1,v2,v4,v8,v5,v3,v6,v7v1,v2,v4,v8,v5,v3,v6,v7v1v1v6v6v2v2v5v5v3v3v8v8v4v4v7v7图的图的DFS算法
6、一般描述算法一般描述int visitedMAXVEX;int visitedMAXVEX;/访问标志数组访问标志数组void DFSgraph(Graph G,Visit()void DFSgraph(Graph G,Visit()/对图对图G G作深度优先遍历作深度优先遍历 for(v=0;vG.vexnum;+v)visitedv=FALSE;for(v=0;vG.vexnum;+v)visitedv=FALSE;/访问标志数组初始化访问标志数组初始化 for(v=0;vG.vexnum;+v)for(v=0;v=0;w=NextAdjVex(G,v,w)for(w=FirstAdjVe
7、x(G,v);w=0;w=NextAdjVex(G,v,w)if(!visitedw)DFS(G,w);if(!visitedw)DFS(G,w);/对对v v的尚未访问的邻接顶点的尚未访问的邻接顶点w w递归调用递归调用DFSDFS 用邻接表实现图的深度优先搜索用邻接表实现图的深度优先搜索v1v1v6v6v2v2v5v5v3v3v8v8v4v4v7v7v9v9v10v1012345678 2 8 2 8 3 7 3 6 4 5 2 3 2 3 1 6 7 1 4 5910 9/10/分析:分析:在遍历图时,对图中每个顶点至多调用一次在遍历图时,对图中每个顶点至多调用一次DFSDFS函数,因为
8、一旦某个顶点被标志成已被访问,函数,因为一旦某个顶点被标志成已被访问,就不再从它出发进行搜索。就不再从它出发进行搜索。因此,遍历图的过程实质上是对每个顶点查因此,遍历图的过程实质上是对每个顶点查找其邻接点的过程。其耗费的时间则取决于所采找其邻接点的过程。其耗费的时间则取决于所采用的存储结构。用的存储结构。2.2.广度优先搜索广度优先搜索(BFS)(BFS)基本思想:基本思想:从图中某个顶点从图中某个顶点V V0 0出发,并在访问此顶点后依出发,并在访问此顶点后依次访问次访问V V0 0的所有未被访问过的邻接点,之后按这些的所有未被访问过的邻接点,之后按这些顶点被访问的先后次序依次访问它们的邻接
9、点,直顶点被访问的先后次序依次访问它们的邻接点,直至图中所有和至图中所有和V V0 0有路径相通的顶点都被访问到;有路径相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点;个未曾被访问的顶点作起始点;重复上述过程,直至图中所有顶点都被访问到重复上述过程,直至图中所有顶点都被访问到为止。为止。例:例:从顶点从顶点v v1 1出发,出发,BFSBFS下图。下图。顶点访问序列为:顶点访问序列为:v v1 1,v,v2 2,v,v3 3,v,v4 4,v,v5 5,v,v6 6,v,v7 7,v,v8 8v v1 1v v6
10、 6v v2 2v v5 5v v3 3v v8 8v v4 4v v7 7用邻接表实现图的广度优先搜索用邻接表实现图的广度优先搜索12345678 2 8 2 8 3 7 3 6 4 5 2 3 2 3 1 6 7 1 4 5v v1 1v v6 6v v2 2v v5 5v v3 3v v8 8v v4 4v v7 7B BFSFS非递归算法非递归算法void BFSTraverse(Graph G,Status(*Visit)(int v)void BFSTraverse(Graph G,Status(*Visit)(int v)/使用辅助队列使用辅助队列Q Q和访问标志数组和访问标志数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 结构图 遍历 连通性 参考
限制150内