在 C 语言中,可以使用队列数据结构实现 BFS 算法。
实现 BFS 的步骤如下:
创建一个队列,并将起始节点加入队列。
当队列不为空时,取出队头元素并标记为已访问。
将当前节点的所有未访问的相邻节点加入队列。
重复步骤 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("