用c语言编写一个程序,用邻接矩阵存储有向图,并输出该邻接矩阵,最后编写主函数进行测试。
时间: 2024-12-28 19:32:22 浏览: 2
在C语言中,我们可以使用二维数组作为邻接矩阵来表示有向图。以下是一个简单的例子:
```c
#include <stdio.h>
#define V 4 // 图中的顶点数
// 定义邻接矩阵结构体
typedef struct {
int graph[V][V]; // 用于存储邻接关系
} Graph;
// 初始化邻接矩阵,所有元素设为0
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; // 用1表示有边连接,0表示无边
}
// 打印邻接矩阵
void print_graph(Graph *g) {
printf("邻接矩阵:\n");
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);
// 打印邻接矩阵
print_graph(&g);
return 0;
}
```
在这个例子中,我们首先创建了一个`Graph`结构体,其中包含一个二维整型数组`graph`。然后通过`initialize_graph`函数初始化所有元素为0,`add_edge`函数用于添加边,`print_graph`函数用于显示邻接矩阵。在`main`函数中,我们实例化一个`Graph`并添加了一些边,最后打印出结果。
阅读全文