C语言无向图创建函数 CreateMgraph() 解释
该函数的作用是创建一个无向图,其中包含了城市和路线的信息。函数会提示用户输入城市数和路线数,并根据输入的数量来初始化图的大小。然后,用户需要输入每个城市的名称,并将其存储在图的相应位置。接下来,用户需要输入每条路线的起点城市、终点城市和路径长度,并将这些信息存储在图的相应位置。最后,函数会将图返回给调用者。
函数代码如下:
void CreateMgraph(Mgraph &g){
int i,j;
char m[N],n[N];
int m1,n1;
printf("请输入城市数和路线数:");
scanf("%d%d",&g.numVertexes,&g.numEdges);
for(i=0;i<g.numVertexes;i++){
g.vexs[i].num=i;
}
printf("请输入相对应的城市:\n");
for(i=0;i<g.numVertexes;i++){
printf("第%d个城市:",i+1);
scanf("%s",&g.vexs[i].city);
}
for(i=0;i<g.numVertexes;i++){
for(j=i;j<g.numVertexes;j++){
if(i==j){
g.arc[i][j]=0;
}
else{
g.arc[i][j]=g.arc[j][i]=INFINITY;
}
}
}
printf("\n");
printf("请输入%d条路经信息如下:\n",g.numEdges);
printf("起点城市 终点城市 路径长度\n");
for(i=0;i<g.numEdges;i++){
scanf("%s%s",&m,&n);
m1=zhuanhua(g,m);
n1=zhuanhua(g,n);
scanf("%d",&g.arc[m1][n1]);
}
}
该函数的主要步骤如下:
- 输入城市数和路线数,并初始化图的大小。
- 输入每个城市的名称并存储在图的 vexs 数组中。
- 初始化邻接矩阵,将所有城市之间的距离设为无穷大,并将自身到自身的距离设为 0。
- 输入每条路线的起点城市、终点城市和路径长度,并存储在图的 arc 矩阵中。
- 返回构建好的无向图。
该函数使用邻接矩阵来表示无向图。邻接矩阵是一个二维数组,其中每个元素表示两个城市之间是否有路线连接。如果两个城市之间有路线连接,则对应的元素的值为路线长度,否则为无穷大。
该函数是创建无向图的常用方法之一,可以根据需要进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/o1wZ 著作权归作者所有。请勿转载和采集!