|
发表于 2014-4-15 18:38:17
|
显示全部楼层
好多地方有错,你直接运行上面代码是运行不了的,我修改了一下,你可以试着运行一下,自己再修改一下
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MaxVertaxNum 100
typedef char VertaxType; //定义顶点元素类型
typedef int EdgeType; //权值类型
typedef struct
{
VertaxType Vex[MaxVertaxNum];
EdgeType Edge[MaxVertaxNum][MaxVertaxNum];
int vexnum,arcnum;
}MGraph;
int LocateVex(VertaxType v,MGraph *G)
{
int i;
for(i=0;i<G->vexnum;i++)
{
if(v==G->vexnum)
return i;
}
printf("顶点不存在!\n");
return -1;
}
void CreateMGraph(MGraph *G)
{
int i,j,k;
VertaxType v1,v2;
EdgeType num;
printf("输入顶点数和边数:");
scanf("%d%d",&G->vexnum,&G->arcnum);
printf("依次输入顶点:");
for(k=0;k<G->vexnum;k++)
{
scanf("%c",&G->Vex[k]);
}
for(i=0;i<G->vexnum;i++)
{
for(j=0;j<G->vexnum;j++)
{
G->Edge[j][i]=0;
}
}
for(k=0;k<G->vexnum;k++)
{
printf("输入边的起点 终点 权值:");
scanf("%c%c%d",&v1,&v2,&num);
i=LocateVex(v1,G);
j=LocateVex(v2,G);
if(-1==i || -1==j)
{
k--;
continue;
}
G->Edge[j][i]=num;//无向图
}
}
int main()
{
MGraph G;
CreateMGraph(&G);
return 0;
}
|
|