图的深度优先遍历和广度优先遍历C语言代码实现
时间: 2023-10-04 12:05:59 浏览: 94
深度优先遍历和广度优先遍历是图的常用遍历算法。下面是C语言代码实现:
## 深度优先遍历代码
```c
#include <stdio.h>
#define MAX_SIZE 100
int visited[MAX_SIZE];
int graph[MAX_SIZE][MAX_SIZE]; // 邻接矩阵表示图
int n; // 图的顶点数
void dfs(int v) {
visited[v] = 1;
printf("%d ", v);
for (int i = 0; i < n; i++) {
if (graph[v][i] && !visited[i]) {
dfs(i);
}
}
}
int main() {
// 初始化图的邻接矩阵
// ...
// 从第一个顶点开始深度优先遍历
dfs(0);
return 0;
}
```
## 广度优先遍历代码
```c
#include <stdio.h>
#define MAX_SIZE 100
int visited[MAX_SIZE];
int graph[MAX_SIZE][MAX_SIZE]; // 邻接矩阵表示图
int n; // 图的顶点数
void bfs(int start) {
int queue[MAX_SIZE];
int front = 0, rear = 0;
queue[rear++] = start;
visited[start] = 1;
while (front < rear) {
int v = queue[front++];
printf("%d ", v);
for (int i = 0; i < n; i++) {
if (graph[v][i] && !visited[i]) {
visited[i] = 1;
queue[rear++] = i;
}
}
}
}
int main() {
// 初始化图的邻接矩阵
// ...
// 从第一个顶点开始广度优先遍历
bfs(0);
return 0;
}
```
阅读全文