用C语言写出以邻接矩阵形式创建一个无向图
时间: 2024-05-25 07:04:37 浏览: 111
以下是一个简单的基于邻接矩阵的无向图实现,使用C语言编写:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTICES 10
typedef struct {
int matrix[MAX_VERTICES][MAX_VERTICES];
int num_vertices;
} Graph;
void initGraph(Graph *g, int num_vertices) {
g->num_vertices = num_vertices;
for (int i = 0; i < num_vertices; i++) {
for (int j = 0; j < num_vertices; j++) {
g->matrix[i][j] = 0;
}
}
}
void addEdge(Graph *g, int v1, int v2) {
g->matrix[v1][v2] = 1;
g->matrix[v2][v1] = 1;
}
void printGraph(Graph *g) {
printf("Adjacency matrix:\n");
for (int i = 0; i < g->num_vertices; i++) {
for (int j = 0; j < g->num_vertices; j++) {
printf("%d ", g->matrix[i][j]);
}
printf("\n");
}
}
int main() {
Graph g;
initGraph(&g, 5);
addEdge(&g, 0, 1);
addEdge(&g, 0, 2);
addEdge(&g, 1, 3);
addEdge(&g, 2, 4);
addEdge(&g, 3, 4);
printGraph(&g);
return 0;
}
```
这个程序定义了一个结构体Graph,其中包含一个二维数组matrix表示邻接矩阵,以及顶点数num_vertices。
使用initGraph函数初始化图,addEdge函数添加边,printGraph函数打印邻接矩阵。在main函数中初始化一个包含5个顶点的图,并添加5条边,最后打印邻接矩阵。
运行程序,输出如下:
```
Adjacency matrix:
0 1 1 0 0
1 0 0 1 0
1 0 0 0 1
0 1 0 0 1
0 0 1 1 0
```
阅读全文