如何写出包含四种图的创建void Create_MGraph(MGraph *G)
时间: 2024-02-21 12:01:48 浏览: 57
数据结构 用邻接矩阵表示图
3星 · 编辑精心推荐
可以通过用户输入图的相关信息,创建对应的图。代码如下:
```c
void Create_MGraph(MGraph *G) {
printf("请输入图的类型:\n");
Graph_Kind(G->kind); // 调用上面的函数,输出图的类型名称
printf("请输入图的顶点数和边数:\n");
scanf("%d %d", &G->vexnum, &G->arcnum);
printf("请输入图的各个顶点:\n");
for(int i = 0; i < G->vexnum; i++) {
scanf("%s", G->vexs[i]);
}
printf("请输入图的各个边及其权值:\n");
for(int i = 0; i < G->vexnum; i++) {
for(int j = 0; j < G->vexnum; j++) {
G->arcs[i][j].adj = INFINITY; // 初始化为无穷大
G->arcs[i][j].info = NULL; // 初始化为空
}
}
for(int k = 0; k < G->arcnum; k++) {
char v1[MAX_VERTEX_NUM], v2[MAX_VERTEX_NUM];
VRType w;
printf("请输入第%d条边的顶点及其权值:\n", k+1);
scanf("%s %s %d", v1, v2, &w);
int i = LocateVex(*G, v1);
int j = LocateVex(*G, v2);
G->arcs[i][j].adj = w;
if(G->kind == UDG || G->kind == UDN) { // 如果是无向图或无向网,对称位置也要赋值
G->arcs[j][i] = G->arcs[i][j];
}
}
}
```
其中,MGraph是一个结构体,包含图的类型、顶点数、边数、各个顶点和各个边及其权值。在函数中,首先要求用户输入图的类型、顶点数和边数,然后输入各个顶点和各个边及其权值。具体实现时,需要用到LocateVex函数,用于查找顶点在图中的位置。
阅读全文