给出一段c语言代码,建立一个有向图的邻接矩阵
时间: 2024-12-12 20:23:43 浏览: 3
在C语言中,我们可以使用数组来表示邻接矩阵,它是一个二维数组,其中每个元素代表两个顶点之间是否存在边。下面是一个简单的示例,假设我们有一个无向图,使用整数0表示没有边,非零值表示存在边:
```c
#include <stdio.h>
#define V 5 // 图的顶点数
// 定义邻接矩阵结构
typedef struct {
int graph[V][V]; // 二维数组存储邻接信息
} Graph;
// 初始化邻接矩阵
void initialize_graph(Graph* g) {
for (int i = 0; i < V; ++i)
for (int j = 0; j < V; ++j)
g->graph[i][j] = 0; // 初始所有边都不存在
}
// 添加边到邻接矩阵
void add_edge(Graph* g, int src, int dest) {
if (src >= 0 && src < V && dest >= 0 && dest < V) {
g->graph[src][dest] = 1; // 边从src指向dest设置为1
g->graph[dest][src] = 1; // 对于无向图,需要双向添加
} else {
printf("Invalid vertex indices.\n");
}
}
// 打印邻接矩阵
void print_matrix(Graph* g) {
for (int i = 0; i < V; ++i) {
for (int j = 0; j < V; ++j) {
printf("%d ", g->graph[i][j]);
}
printf("\n");
}
}
int main() {
Graph g;
initialize_graph(&g);
add_edge(&g, 0, 1); // 添加两条边
add_edge(&g, 1, 2);
add_edge(&g, 2, 3);
add_edge(&g, 4, 3);
printf("Adjacency matrix of the graph:\n");
print_matrix(&g);
return 0;
}
```
阅读全文