无向图的邻接矩阵C语言
时间: 2024-08-14 17:07:36 浏览: 61
在C语言中,无向图可以使用邻接矩阵来表示,它是一个二维数组,其中行代表起点,列代表终点,元素值表示两个顶点之间是否存在边。如果顶点i和j相连,则邻接矩阵的[i][j]或[j][i]的值通常为1(某些实现可能会用非零值如0或true表示有边),如果不连则为0或false。
以下是一个简单的无向图邻接矩阵的C语言实现示例:
```c
#include <stdio.h>
#define V 5 // 图中顶点的数量
// 邻接矩阵的结构体
typedef struct {
int graph[V][V]; // 存储边的信息
} AdjMatrix;
// 初始化邻接矩阵为全零
void initializeGraph(AdjMatrix* adj) {
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
adj->graph[i][j] = 0;
}
}
}
// 添加边到矩阵
void addEdge(AdjMatrix* adj, int src, int dest) {
adj->graph[src][dest] = 1; // 如果src指向dest,设置对应位置为1
adj->graph[dest][src] = 1; // 反向边也添加
}
// 打印邻接矩阵
void printGraph(AdjMatrix* adj) {
printf("邻接矩阵:\n");
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
printf("%d ", adj->graph[i][j]);
}
printf("\n");
}
}
int main() {
AdjMatrix adj;
initializeGraph(&adj);
// 添加边的例子
addEdge(&adj, 0, 1);
addEdge(&adj, 1, 2);
addEdge(&adj, 2, 4);
printGraph(&adj);
return 0;
}
```
阅读全文