c语言用邻接矩阵建无向无权值图
时间: 2023-12-25 12:28:09 浏览: 168
以下是C语言用邻接矩阵建无向无权值图的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100 // 最大顶点数
typedef int Vertex; // 顶点类型
typedef struct {
int edges[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int n; // 顶点数
} MGraph;
// 初始化邻接矩阵
void InitGraph(MGraph *G, int n) {
G->n = n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
G->edges[i][j] = 0;
}
}
}
// 添加边
void AddEdge(MGraph *G, Vertex v1, Vertex v2) {
G->edges[v1][v2] = 1;
G->edges[v2][v1] = 1;
}
// 深度优先遍历
void DFS(MGraph G, Vertex v, int visited[]) {
visited[v] = 1;
printf("%d ", v);
for (int i = 0; i < G.n; i++) {
if (G.edges[v][i] && !visited[i]) {
DFS(G, i, visited);
}
}
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
MGraph G;
InitGraph(&G, n);
for (int i = 0; i < m; i++) {
int v1, v2;
scanf("%d %d", &v1, &v2);
AddEdge(&G, v1, v2);
}
int visited[MAX_VERTEX_NUM] = {0};
for (int i = 0; i < n; i++) {
if (!visited[i]) {
DFS(G, i, visited);
}
}
return 0;
}
```
阅读全文