c语言如何建立一个无向图的邻接矩阵,具体代码
时间: 2024-06-08 10:11:39 浏览: 124
建立一个无向图的邻接矩阵需要先确定图的顶点数和边数,然后通过输入边的信息来构建邻接矩阵。以下是一个基于邻接矩阵的无向图的代码示例:
```c
#include <stdio.h>
#define MAXVEX 100 // 最大顶点数
// 定义邻接矩阵结构体
typedef struct {
int vexs[MAXVEX]; // 存储顶点信息
int edges[MAXVEX][MAXVEX]; // 存储边的信息,0表示无边,1表示有边
int vexnum, edgenum; // 记录顶点数和边数
} Graph;
// 初始化无向图
void initGraph(Graph *G) {
int i, j;
printf("请输入无向图的顶点数和边数:\n");
scanf("%d%d", &(G->vexnum), &(G->edgenum));
printf("请输入无向图的顶点信息:\n");
for (i = 0; i < G->vexnum; i++) {
scanf("%d", &(G->vexs[i]));
}
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
G->edges[i][j] = 0;
}
}
printf("请输入无向图的边信息(格式为i j,表示i和j之间有一条边):\n");
for (i = 0; i < G->edgenum; i++) {
int v1, v2;
scanf("%d%d", &v1, &v2);
// 无向图的邻接矩阵是对称的
G->edges[v1][v2] = G->edges[v2][v1] = 1;
}
}
// 输出无向图的邻接矩阵
void printGraph(Graph G) {
int i, j;
printf("无向图的邻接矩阵为:\n");
for (i = 0; i < G.vexnum; i++) {
for (j = 0; j < G.vexnum; j++) {
printf("%d ", G.edges[i][j]);
}
printf("\n");
}
}
int main() {
Graph G;
initGraph(&G);
printGraph(G);
return 0;
}
```
这个示例代码中,我们通过输入顶点数和边数,以及每条边连接的两个顶点,来构建一个无向图的邻接矩阵。最后输出构建好的邻接矩阵。
阅读全文