出度边:行之和
入度边:列之和
#incldue<stdio.h>
#define MVNum 100
#define Maxlnt 32767
//图的存储结构
typedef struct{
char vexs[MVNum];//顶点表(存放的是字符)
int arcs[MVNum][MVNum];//临接矩阵
int vexnum;//顶点表个数
int arcnum;//边数
}AMGraph;
//现在以创建无向网为例
void CreatGraph(AMGraph &G){
int i,j;
scanf("%d %d",&G.arcnum,&G.vexnum);//输入顶点数和边数
//依次输入顶点的信息
for(i=0;i<G.vexnum;i++){
scanf("%d",&G.vexs[i]);
}
for(i=0;i<G.vexnum;i++){
for(j=0;j<G.vexnum;j++){
G.arcs[i][j]=Maxlnt;
}
}
for(k=0;k<G.arcnum;k++){
scanf("%c,%c,%d",&v1,&v2,&w);//分别输入两个顶点以及两点之间边的权值
i=LocateVex(v1,G); //通过该函数查找v1与v2在顶点表中对应的下标
j=LocateVex(v2,G);
G.arcs[i][j]=w;
G.arcs[j][i]=w;//无向网矩阵对称
}
return 1;
}
int LocateVex(char v,AMGraph G){
int i;
for(i=0;i<G.Vexnum;i++){
if(G.vexs[i]==v)
return i;
}
return -1
}