这么简单的东西搞了几个小时,getchar(),%c,我算你们狠
#include<stdio.h>
#define maxint 32577
#define mvnum 100
using namespace std;
typedef char vertextype;
typedef int arctype;
typedef struct
{
vertextype vex[mvnum];
arctype arc[mvnum][mvnum];
int vexnum,arcnum;
}amgraph;
int find(amgraph G,char v)
{
int i;
for(i=0;i<G.vexnum;i++)
if(G.vex[i]==v)return i;
}
void create(amgraph &G)
{
scanf("%d %d",&G.vexnum,&G.arcnum);
int i,j,k;
char v1,v2;
getchar();
for(i=0;i<G.vexnum;i++)
scanf("%c",&G.vex[i]); //这里注意%c用的字符,可以吸收空格,
//所以输入的时候,不要输一个字符就打一个空格
for(i=0;i<G.vexnum;i++)
for(j=0;j<G.vexnum;j++)
G.arc[i][j]=maxint;
int w;
getchar();
for(k=0;k<G.arcnum;k++)
{
scanf("%c%c%d",&v1,&v2,&w);
getchar();
i=find(G,v1);j=find(G,v2);
G.arc[i][j]=w;
G.arc[j][i]=w;
}
}
int main()
{
amgraph G;
create(G);
int i,j;
for(i=0;i<G.vexnum;i++)
{
for(j=0;j<G.vexnum;j++)
printf("%d ",G.arc[i][j]);
printf("\n");
}
}
c++版本不用getchar(),如下
#include<stdio.h>
#include<iostream>
#define maxint 0
#define mvnum 100
using namespace std;
typedef char vertextype;
typedef int arctype;
typedef struct
{
vertextype vex[mvnum];
arctype arc[mvnum][mvnum];
int vexnum,arcnum;
}amgraph;
int find(amgraph G,char v)
{
int i;
for(i=0;i<G.vexnum;i++)
if(G.vex[i]==v)return i;
}
void create(amgraph &G)
{
cin>>G.vexnum>>G.arcnum;
int i,j,k;
char v1,v2;
for(i=0;i<G.vexnum;i++)
cin>>G.vex[i];
for(i=0;i<G.vexnum;i++)
for(j=0;j<G.vexnum;j++)
G.arc[i][j]=maxint;
int w;
for(k=0;k<G.arcnum;k++)
{
cin>>v1>>v2>>w;
i=find(G,v1);j=find(G,v2);
G.arc[i][j]=w;
G.arc[j][i]=w;
}
}
int main()
{
amgraph G;
create(G);
int i,j;
for(i=0;i<G.vexnum;i++)
{
for(j=0;j<G.vexnum;j++)
printf("%d ",G.arc[i][j]);
printf("\n");
}
}