数据结构与算法--图的广度优先遍历

本文介绍了如何使用C语言实现图的广度优先遍历(BFS)。通过邻接表存储图,并借助队列进行操作,确保先访问的顶点的邻接点先被访问。同时提供了队列的初始化、判空、入队和出队等辅助函数。
摘要由CSDN通过智能技术生成

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include “ALGraph.h”

int visited[MAXVEX]; /设访问标志数组为全局变量/

void BFSTraverse(ALGraph g)
{/广度优先遍历以邻接表存储的图g,由于BFS要求”先被访问的顶点的邻接点也先被访问”,故需借助队列Q实现/
// 请在这里补充代码,完成本关任务
/********** Begin *********/

int i;  
SeqQueue *Q = (SeqQueue *)malloc(sizeof(SeqQueue));   //创建队列

for (i=0; i<g.vexnum; ++i){   /*访问标志数组初始化*/
    visited[i] = 0; 
} 
InitQueue(Q);      //队列的初始化

for (i=0; i<g.vexnum; ++i){  
    if(!visited[i]){     //如果第i个结点没有被访问
        visited[i] = 1;  
        printf("%d ", g.vertices[i].vex);  
        EnQueue(Q, i);       //将元素x入队

        while (Q->len!=0){    //当队列不为空时,或者 Q->front != Q->rear
            DeQueue(Q, &i);     //将队头元素出队
            ENode *p = g.vertices[i].firstarc;  
            while (p){  
                if (!vis
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值