C语言代码 广度优先算法 六度空间
时间: 2023-01-31 15:56:58 浏览: 295
广度优先搜索程序c语言编写
4星 · 用户满意度95%
广度优先算法(BFS)是一种图论算法,它的思想是从一个点开始,按照宽度的顺序依次搜索周围的点,直到找到目标点为止。这个过程可以用队列来实现。
下面是一个简单的广度优先搜索的C语言代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 20 // 最大顶点数
// 图的邻接矩阵存储结构
typedef struct {
int vertex[MAX_VERTEX_NUM]; // 顶点信息
int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vertex_num, arc_num; // 顶点数和边数
} Graph;
// 队列的存储结构
typedef struct {
int data[MAX_VERTEX_NUM]; // 队列数组
int front, rear; // 队列头和队列尾
} Queue;
// 初始化队列
void init_queue(Queue *q) {
q->front = q->rear = 0;
}
// 入队操作
void enqueue(Queue *q, int x) {
q->data[q->rear++] = x;
}
// 出队操作
int dequeue(Queue *q) {
return q->data[q->front++];
}
// 判断队列是否为空
int queue_empty(Queue *q) {
return q->front == q->rear;
}
// 广度优先搜索
void BFS(Graph *g, int start) {
int i;
int visited[MAX_VERTEX_NUM]; // 记录顶点是否被访问过
Queue q;
// 初始化访问数组和队列
for (i = 0; i < g->vertex_num; i++) {
visited[i] = 0;
}
init_queue(&q);
阅读全文