C语言建立无向图的邻接矩阵存储并输出
时间: 2023-12-21 18:47:26 浏览: 91
下面是C语言建立无向图的邻接矩阵存储并输出的示例代码:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 20 // 最大顶点数
typedef struct {
int vexs[MAX_VERTEX_NUM]; // 存放顶点的数组
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存放边的邻接矩阵
int vexnum, arcnum; // 存放顶点数和边数
} Graph;
void createGraph(Graph* G) {
int i, j, k;
printf("请输入顶点数和边数:");
scanf("%d%d", &G->vexnum, &G->arcnum);
printf("请输入顶点:");
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->arcs[i][j] = 0; // 初始化邻接矩阵
}
}
printf("请输入边(vi, vj)的顶点序号和权值:\n");
for (k = 0; k < G->arcnum; k++) {
scanf("%d%d", &i, &j);
G->arcs[i][j] = G->arcs[j][i] = 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.arcs[i][j]);
}
printf("\n");
}
}
int main() {
Graph G;
createGraph(&G);
printGraph(G);
return 0;
}
```
示例输入:
```
请输入顶点数和边数:5 6
请输入顶点:1 2 3 4 5
请输入边(vi, vj)的顶点序号和权值:
0 1
0 2
1 3
1 4
2 4
3 4
```
示例输出:
```
邻接矩阵如下:
0 1 1 0 0
1 0 0 1 1
1 0 0 0 1
0 1 0 0 1
0 1 1 1 0
```
阅读全文