c语言的有向图邻接矩阵程序怎么写
时间: 2025-01-03 09:41:00 浏览: 13
在C语言中,我们可以使用二维数组来表示有向图的邻接矩阵。这里是一个简单的示例,展示了如何创建、添加边以及遍历这个矩阵:
```c
#include <stdio.h>
#define MAX_VERTICES 10 // 定义最大顶点数
// 邻接矩阵结构体
typedef struct {
int graph[MAX_VERTICES][MAX_VERTICES]; // 矩阵存储边的数量
int vertices; // 图中的顶点数量
} DirectedGraph;
// 添加边到邻接矩阵
void addEdge(DirectedGraph* g, int src, int dest) {
if (src >= g->vertices || dest >= g->vertices)
printf("Invalid vertex index.\n");
else
g->graph[src][dest] = 1; // 无向图时设为1,有向图时可以设置方向标志
}
// 打印邻接矩阵
void printAdjMatrix(DirectedGraph g) {
for (int i = 0; i < g.vertices; i++) {
for (int j = 0; j < g.vertices; j++)
printf("%d ", g.graph[i][j]);
printf("\n");
}
}
// 主函数示例
int main() {
DirectedGraph graph;
int v1, v2;
// 初始化顶点数量
printf("Enter number of vertices: ");
scanf("%d", &graph.vertices);
graph.graph[0][1] = 1; // 示例:从v1到v2有一条边
// 添加更多边...
printf("Add edges (format: src dest): \n");
while (scanf("%d %d", &v1, &v2)) {
addEdge(&graph, v1 - 1, v2 - 1); // 减一因为数组索引是从0开始的
}
// 输出邻接矩阵
printAdjMatrix(graph);
return 0;
}
```
阅读全文