c语言实现邻接矩阵创建无向图
时间: 2023-10-15 13:04:03 浏览: 83
好的,下面是C语言实现邻接矩阵创建无向图的代码:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 20 // 最大顶点数
typedef struct {
int vertex[MAX_VERTEX_NUM]; // 顶点数组
int matrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vertex_num; // 顶点数
int edge_num; // 边数
} Graph;
// 初始化图
void init_graph(Graph *graph, int vertex_num) {
graph->vertex_num = vertex_num;
graph->edge_num = 0;
// 初始化顶点数组
int i;
for (i = 0; i < vertex_num; i++) {
graph->vertex[i] = i + 1;
}
// 初始化邻接矩阵
int j;
for (i = 0; i < vertex_num; i++) {
for (j = 0; j < vertex_num; j++) {
graph->matrix[i][j] = 0;
}
}
}
// 添加边
void add_edge(Graph *graph, int start, int end) {
graph->matrix[start-1][end-1] = 1;
graph->matrix[end-1][start-1] = 1;
graph->edge_num++;
}
// 打印邻接矩阵
void print_matrix(Graph *graph) {
int i, j;
for (i = 0; i < graph->vertex_num; i++) {
for (j = 0; j < graph->vertex_num; j++) {
printf("%d ", graph->matrix[i][j]);
}
printf("\n");
}
}
int main() {
Graph graph;
init_graph(&graph, 5);
add_edge(&graph, 1, 2);
add_edge(&graph, 1, 4);
add_edge(&graph, 2, 3);
add_edge(&graph, 2, 4);
add_edge(&graph, 2, 5);
add_edge(&graph, 3, 5);
print_matrix(&graph);
return 0;
}
```
这个程序实现了一个邻接矩阵的无向图,可以通过调用 `init_graph` 初始化图, `add_edge` 添加边, `print_matrix` 打印邻接矩阵。
阅读全文