无向图的邻接表存储方式的广度优先遍历的实现

本文介绍了无向图的邻接表存储方式下,如何实现广度优先遍历的算法。通过初始化visited数组记录节点状态,从第一个节点开始扫描并访问未访问过的节点,将其加入队列,接着访问邻接节点,直至队列为空。通过示例详细解释了算法执行过程,最后给出了实现代码。
摘要由CSDN通过智能技术生成

算法描述如下:
1)初始化一个数组visited标记节点是否被访问;
2)从第一个结点开始扫描图结点数组,如果对应的visited为false,则访问该结点,同时将标志设置为true,并将结点入队列;
3)访问对应结点的head直到NULL(表示结束),如果visited为false则访问,并入队列;若该结点访问完毕则出队列;
4)重复步骤3直到队列为空。
分析示例:
在这里插入图片描述
1)从第一个结点A开始访问并将标记设为true;
2)依次访问A的邻接点B、C、D,在访问过程中将相应的标记设为true;并将B、C、D入队列;此时A的邻接点访问完毕,A出队列,此时B的邻接点为D、F,访问完成之后队列中的数据为BCDF;此时B的邻接点访问完毕,出队列;
3)继续执行“出队列”和“访问头结点”两个步骤直到队列为空。算法执行结束。得到A->B->C->D->F->E就是我们要求的广度优先遍历的结果。
代码如下:

void GraphBfs(const PAdjGraph graph)
{
   
    if(graph == NULL) {
   
        perror("graph is null."
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

存墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值