发布网友 发布时间:2022-04-23 11:55
共3个回答
热心网友 时间:2022-07-14 06:17
void CreateMGraph(Mgraph *G){
/*建立无向网络的邻接矩阵表示*/
int i, j, k, w;
scanf("%d%d", &(G->n),&(G->e)); //输入两个整数,前一个作为定点个数,后一个作为边的个数
for (i = 0; i < G->n; i++ )
G->vexs[i] = getchar(); //获得每个定点的字符。应该是作为定点的名称或者标识
for (i = 0; i < G->n; i++ ) //初始化邻接矩阵,n个定点的邻接矩阵是nxn的数组所以双循环。把它们都初始化为1000,意思是权值为1000的时候两点之间没有边。小于1000就是有边。
{
for (j = 0; j < G->n; j++ )
G->edges[i][j] =1000;
}
for(k = 0; k < G->e; k++) //因为有e条边所以获得e条边的权值
{
scanf("%d%d%d",&i, &j, &w); //每次获得3个整数,分别代表边的两个定点ij和边的权值w
G-> edges[i][j] = w; //把权值放到邻接矩阵的相应位置,这样第i和j定点之间的权值不再是1000,说明之间有边链接
}
}
热心网友 时间:2022-07-14 06:18
/*n,e分别为顶点和边
vesx【】为顶点数组
edges【】为带权的数组
*/
void CreateMGraph(Mgraph *G){
/*建立无向网络的邻接矩阵表示*/
int i, j, k, w;
scanf("%d%d", &(G->n),&(G->e)); //n为无向网络中顶点数量,e为边的数量
for (i = 0; i < G->n; i++ )
G->vexs[i] = getchar(); //初始化邻接矩阵中的顶点
for (i = 0; i < G->n; i++ )
{
for (j = 0; j < G->n; j++ )
G->edges[i][j] =1000; //标记无向网络的边,使每个边的值为无穷大。
//此处以1000来表示无穷大
}
//上面以无穷大标记了各个边,下面再给实际存在的边赋值,则实际存在的边的值不为无穷大,
//这样就可辨别某边是否存在
for(k = 0; k < G->e; k++)
{
scanf("%d%d%d",&i, &j, &w)
G-> edges[i][j] = w; //给所有联通的边赋值。未赋值边的值为无穷大,表示边是
//断开的,即该边的两个点之间无连接。
}
}
void main()
{
void CreateMGraph(Mgraph *G);
}
热心网友 时间:2022-07-14 06:18
这个。。。你直接拿数据结构的教科书,从图论那章开始看下去去吧,图论不是一两句话能说清楚的,我就是把这段程序都注释出来你也不一定能懂。