c语言用邻接矩阵建图
时间: 2023-12-25 18:28:08 浏览: 175
C语言可以使用二维数组来实现邻接矩阵建图。具体步骤如下:
1.定义一个二维数组来表示邻接矩阵,数组大小为n*n,其中n为图的顶点数。
2.初始化邻接矩阵,将所有元素都赋值为0。
3.根据图的边信息,将邻接矩阵中对应位置的元素赋值为1或者边的权值。
4.遍历邻接矩阵,输出图的信息。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 100
typedef struct {
int vertex[MAX_VERTEX_NUM];
int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
int vexnum, arcnum;
} MGraph;
void CreateMGraph(MGraph *G) {
int i, j, k, w;
printf("请输入顶点数和边数:\n");
scanf("%d%d", &G->vexnum, &G->arcnum);
printf("请输入顶点信息:\n");
for (i = 0; i < G->vexnum; i++) {
scanf("%d", &G->vertex[i]);
}
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
G->arc[i][j] = 0;
}
}
printf("请输入边的信息:\n");
for (k = 0; k < G->arcnum; k++) {
printf("请输入第%d条边的起点、终点和权值:\n", k + 1);
scanf("%d%d%d", &i, &j, &w);
G->arc[i][j] = w;
G->arc[j][i] = w; // 无向图需要将对称位置也赋值
}
}
void PrintMGraph(MGraph G) {
int i, j;
printf("邻接矩阵为:\n");
for (i = 0; i < G.vexnum; i++) {
for (j = 0; j < G.vexnum; j++) {
printf("%d ", G.arc[i][j]);
}
printf("\n");
}
}
int main() {
MGraph G;
CreateMGraph(&G);
PrintMGraph(G);
return 0;
}
```
阅读全文