Boolean visited[MAX_VERTEX_NUM]; //访问标志数组。
Status (*VisitFunc)(int v); //VisitFunc是访问函数,对图的每个顶点调用该函数。
void BFSTraverse (Graph G, Status(*Visit)(int v)) //图的广度优先遍历。
{
VisitFunc = Visit;
for(v=0; v<G.vexnum, ++v)
visited[v] = FALSE;
initQueue(Q); //置空辅助队列Q。
for(v=0; v<G.vexnum; ++v)
if(!visited[v])
{
visited[v]=TRUE;
VisitFunc(v);
EnQueue(Q, v); //v入队列
while(!QueueEmpty(Q))
{
DeQueue(Q, u); //队首元素出队并置为u。
for(w=FirstAdjVex(G,u); w>=0; w=NextAdjVex(G,u,w))
if(!Visited[w]) //w为u的尚未访问的邻接顶点。
{
Visited[w]=TRUE;
VisitFunc(w);
EnQueue(Q, w);
}
}
}
}
分享到:
相关推荐
实验与算法分析 先定义图的邻接表数据类型,建立该图的邻接表,然后在用子函数写出广度优先搜索 遍历的遍历算法,最后用主函数调用它。实现广度优先搜索遍历可以利用队列的原理。 用到两个类,一个用于定义链表类型...
《数据结构与算法(C++版)》先关 邻接表表示的图的广度优先遍历的动画演示
数据结构有关的图的深度优先和广度优先遍历
C++实现,数据结构,图的邻接矩阵表示,深度优先遍历,广度优先遍历,DFS,BFS,为什么要五十个字才能上传啊
本资源是用C语言所写的,数据结构中图的创建及其相关的深度,广度遍历
数据结构课程设计图的遍历 printf("\n"); printf("\t\t\t ~~~~~~~~ 功能菜单 ~~~~~~~ \n"); printf("\n"); printf("\t\t\t*********************************************\n"); printf("\t\t\t* 1.创建图 *\n...
树的深度和广度遍历C++源程序。数据结构课上的作业
通过实验掌握理解图的两种主要存储结构,掌握图的构造算法,掌握图的深度优先遍历、广度优先遍历算法;理解拓扑排序、AOV网、AOE网等图型结构的操作方法应用价值。 2.实验工具 dev c++ 3.实验方案 1. 键盘输入的...
数据结构进行图的遍历,包括深度优先遍历和广度优先遍历,并输出链表
c++数据结构--实验 线性表的基本操作 1.实验内容与要求 1)理解线性表的概念 2)设计一个线性表,分别用顺序存储结构和链式存储结构实现,完成线性表的构造、查找、插入、删除、输出等基本操作。 3)掌握两种存储...
大学课程、数据结构、代码、建立图的存储结构、广度优先搜索遍历路径
100%可运行的数据结构迷宫问题 盐城工学院 别的高校都可用
数据结构那本书上的图的邻接表存储 struct node { int vertex; struct node * nextnode; };
1)创建一个图; 2)图的深度优先遍历的递归算法; 3)图的深度优先遍历的迭代算法; 4)图的广度优先遍历算法。
是C++的图的深度遍历和度遍历,学习数据结构的必要重点知识。
c++ 数据结构 有向图的深度 广度 遍历 全代码 参考资料 任燕版 数据结构
学习数据结构时老师让做的实验,用嵌套做的,希望能帮助大家!
本演示程序用Visual C++编写,从键盘输入,以用户指定的结点为起点,实现无向图广度遍历,并打印输出广度遍历结点访问顺序。 1、输入的形式和输入值的范围:非负整数。 2、输入顶点的数量限制:最大40个 3、输出...
以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。 [测试数据] 由学生依据软件工程的测试技术自己确定。注意测试边界...
二叉树 非递归实现 数据结构 c++ 广度遍历,非递归实现广度遍历生成二叉树。 数据结构与算法上机作业。