收藏 分享(赏)

数据结构63(图).ppt

上传人:hskm5268 文档编号:7011042 上传时间:2019-04-30 格式:PPT 页数:12 大小:482.50KB
下载 相关 举报
数据结构63(图).ppt_第1页
第1页 / 共12页
数据结构63(图).ppt_第2页
第2页 / 共12页
数据结构63(图).ppt_第3页
第3页 / 共12页
数据结构63(图).ppt_第4页
第4页 / 共12页
数据结构63(图).ppt_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、1,ab cde fg h i,5.3 图的遍历,从图中某个顶点出发,访遍图中其余顶点,并且使图中的每个顶点仅被访问一次的过程。,2,5.3.1 深度优先搜索(Depth-First Search),访问顶点的次序:ab e g d c f h i,ab cde fg h i,3,图的遍历的思想: (1)选择图中某个顶点V0 作为出发点,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到;(2)若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点。(3)重复上述过程,直至图中所有顶点都被访问到为止。 图的深度优先搜

2、索遍历类似于树的先根遍历,4,a,c,h,d,k,f,e,b,g,a,c,h,k,f,e,d,b,g,访问次序:,例如:,访问标志:,T,T,T,T,T,T,T,T,T,0 1 2 3 4 5 6 7 8,5,连通图的深度优先搜索的算法(用递归实现) /- 下列算法使用的全局变量 - int visitedvnum; / 访问标志组,0表示没访问过,1表示访问过 void DFS(ALGraph G,int v) / 对图G作深度优先遍历,图G的存储结构为邻接表。 ArcNode *p; printf(G.adjlistv.data); visitedv=1; /第v个顶点已访问过 p=G.a

3、djlistv.firsarc; /p指向与第v个顶点相连的第1个结点 while(p!=NULL) if (!visitedp-adjvex)DFS(G,p-adjvex);/ 对尚未访问的顶点调用DFSp=p-nextarc; ,6,依据下图及其邻接表存储结构,写出其深度优先遍历的结果。,7,ab cde fg h i,5.3.2 广度优先搜索,一层,二层,三层,访问顶点的次序:ab d c e f g h i,8,从图中的某个顶点V0出发,并在访问此顶点之后依次访问V0的所有未被访问过的邻接点,之后按这些顶点被访问的先后次序依次访问它们的邻接点,直至图中所有和V0有路径相通的顶点都被访问

4、到。若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。广度优先搜索遍历类似于树的按层遍历。,9,w1,V,w2,w7,w6,w3,w8,w5,w4,广度优先访问的序列为: V-w1-w2-w8-w7-w3-w5-w6-w4,广度优先遍历类似于树的按层次遍历,10,连通图的广度优先搜索算法(用队列实现) void BFS(ALGraph G, int v) /按广度优先遍历图G。使用辅助队列Q和访问标志数组visited。 InitQueue(Q); / 置空的辅助队列Q printf(G.adjlistv.data); visit

5、edv=1; EnQueue( / BFS,11,图的连通分量计算算法(广度优先) int visitedvnum; void Count_Component(ALGraph G) for (v=0; vG.vexnum; +v) visitedv = 0;count=0; for ( v=0; vG.vexnum; +v )if ( !visitedv) / v尚未访问 count+;printf(“连通分量%d包含以下顶点:”,count); BFS(G,v);/广度优先printf(“n”); printf(“该图总共有%d个连通分量n”,count);,12,上机作业,编程实现图的两种遍历算法。图的存储结构用邻接表。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据结构与算法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报