用c语言写 创建无向图 功能:创建无向图,先通过printf("请依次输入无向网的顶点数和边数:\n")提示录入顶点和边的个数, 顶点个数和边的个数之间用空格隔开,键入回车,完成输入 然后通过printf("请依次输入%d个顶点:",顶点个数),输入每个顶点,顶点和顶点之间用空格隔开,键入回车,完成输入 然后通过printf("请输入%d条边关系的邻接矩阵:\n",边的个数) 输入每条边对应的两个顶点的信息, 输入时,两个顶点之间用空格隔开,边与边之间使用回车进行换行,所有边输入完成后,自动结束输入 参数:MGraph *G 是需要操作的图 返回值:无。
时间: 2024-03-10 21:44:41 浏览: 44
下面是用 C 语言实现创建无向图的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100 // 最大顶点数
typedef struct {
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vexnum; // 顶点数
int arcnum; // 边数
} MGraph;
// 创建无向图
void CreateUDG(MGraph *G) {
int i, j, k, w;
printf("请依次输入无向网的顶点数和边数:\n");
scanf("%d %d", &G->vexnum, &G->arcnum);
// 初始化邻接矩阵
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
G->arcs[i][j] = 0;
}
}
printf("请依次输入%d个顶点:\n", G->vexnum);
for (i = 0; i < G->vexnum; i++) {
scanf("%d", &k);
}
printf("请输入%d条边关系的邻接矩阵:\n", G->arcnum);
for (k = 0; k < G->arcnum; k++) {
scanf("%d %d %d", &i, &j, &w);
G->arcs[i][j] = w;
G->arcs[j][i] = w;
}
}
int main() {
MGraph G;
CreateUDG(&G);
return 0;
}
```
这里用邻接矩阵来表示无向图,`arcs[i][j]` 表示顶点 i 和顶点 j 之间的边的权值。输入时,先输入顶点数和边数,然后输入每个顶点的编号,最后输入每条边对应的两个顶点的信息和边的权值。
阅读全文