帮我写一个广度优先遍历算法c语言
时间: 2025-02-16 12:14:49 浏览: 33
当然可以,下面是一个简单的广度优先搜索(BFS,也称为层次遍历)算法的C语言实现,用于树或图结构:
```c
#include <stdio.h>
#include <stdlib.h> // 需要用到队列
#define MAX 100
// 定义节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点函数
Node* newNode(int data) {
Node* node = (Node*)malloc(sizeof(Node));
if (node == NULL) {
printf("Memory allocation failed.\n");
return NULL;
}
node->data = data;
node->next = NULL;
return node;
}
// 广度优先遍历函数
void bfs(Node* root) {
if (root == NULL) {
printf("The tree is empty.\n");
return;
}
// 初始化队列并入队根节点
Node* queue[MAX];
int front = -1, rear = 0;
queue[rear++] = root;
while (front != rear) {
// 出队并打印当前节点
Node* temp = queue[front++];
printf("%d ", temp->data);
// 将当前节点的所有邻居入队
Node* curr = temp->next;
while (curr != NULL) {
queue[rear] = curr;
rear++;
curr = curr->next;
}
}
}
int main() {
// 请替换这里为实际的节点添加操作
Node* root = newNode(1);
// ...
// 开始遍历
bfs(root);
return 0;
}
```
在这个示例中,`bfs()`函数接收一个树的根节点作为输入,它会按照广度优先的方式访问节点,并打印出它们的值。请记得根据需要替换主函数中的节点创建部分。
阅读全文
相关推荐















