#include<stdio.h>
#include<stdlib.h>
#define maxnum 30 //最大顶点个数
#define MAX_INT 32767
typedef struct {
char vexs[maxnum]; //顶点向量
int arcs[maxnum][maxnum];//邻接矩阵
int vexnum,arcnum; //图的顶点数和弧数
}Mgraph;
void createMgraph(Mgraph *G)
{
int i,j,k,w;
printf("输入顶点个数和边数:");
scanf("%d %d",&G->vexnum,&G->arcnum);
for(i=0;i<G->vexnum;i++)
G->vexs[i]=(char)i; //以城市i为出发点
for(i=0;i<G->vexnum;i++);
for(j=0;j<G->vexnum;j++) //任意城市j为终点
{
G->arcs[i][j]=MAX_INT;//距离初始化
}
for(k=0;k<G->arcnum;k++)//构造邻接矩阵
{
printf("输入两个顶点和权值");
scanf("%d %d %d",&i,&j,&w);
G->arcs[i][j]=w;
G->arcs[j][i]=w; //无向图邻接矩阵具有对称性
}
}
int main()
{
Mgraph *G;
createMgraph(G);
return 0;
}
改成这样就好了
#include<stdio.h>
#include<stdlib.h>
#define maxnum 30 //最大顶点个数
#define MAX_INT 32767
typedef struct {
char vexs[maxnum]; //顶点向量
int arcs[maxnum][maxnum];//邻接矩阵
int vexnum,arcnum; //图的顶点数和弧数
}Mgraph;
void createMgraph(Mgraph G)
{
int i,j,k,w,x,y;
printf("输入顶点个数和边数:");
scanf("%d %d",&x,&y);
G.vexnum=x;
G.arcnum=y;
for(i=0;i<G.vexnum;i++)
G.vexs[i]=(char)i; //以城市i为出发点
for(i=0;i<G.vexnum;i++)
for(j=0;j<G.vexnum;j++) //任意城市j为终点
{
G.arcs[i][j]=MAX_INT;//距离初始化
}
for(k=0;k<G.arcnum;k++)//构造邻接矩阵
{
printf("输入两个顶点和权值");
scanf("%d %d %d",&i,&j,&w);
G.arcs[i][j]=w;
G.arcs[j][i]=w; //无向图邻接矩阵具有对称性
}
}
int main()
{
Mgraph G;
createMgraph(G);
return 0;
}
删除for语句后面的分号:
for(i=0;ivexnum;i++)
因为这个循环,你多了个分号 ;
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!希望对题主有所帮助!可以的话,帮忙点个采纳!