用C语言写一个BFS

在 C 语言中,可以使用队列数据结构实现 BFS 算法。

实现 BFS 的步骤如下:

  1. 创建一个队列,并将起始节点加入队列。

  2. 当队列不为空时,取出队头元素并标记为已访问。

  3. 将当前节点的所有未访问的相邻节点加入队列。

  4. 重复步骤 2 和 3,直到队列为空或者找到目标节点。

以下是一个简单的 BFS 的代码实现:

``` #include<stdio.h> #include<stdlib.h>

#define MAX_VERTEX_NUM 20 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0

typedef int Status; typedef int Boolean;

Boolean visited[MAX_VERTEX_NUM]; int front,rear; int queue[MAX_VERTEX_NUM]; int graph[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; int vertex_num;

Status init_graph(int vertex_num) { int i,j; for(i=0;i<vertex_num;i++) { visited[i]=FALSE; for(j=0;j<vertex_num;j++) graph[i][j]=0; } return OK; }

void BFS(int start) { int i; visited[start]=TRUE; printf("%d ",start); queue[rear++]=start; while(front!=rear) { int u=queue[front++]; for(i=0;i<vertex_num;i++) { if(graph[u][i]==1&&visited[i]==FALSE) { visited[i]=TRUE; printf("%d ",i); queue[rear++]=i; } } } }

int main() { int i,j,start; printf("请输入顶点数:"); scanf("%d",&vertex_num); init_graph(vertex_num); printf("请输入边数:"); int edge_num; scanf("

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值