#include"stdio.h"
#include"stdlib.h"
#define maxsize 100
#define max 32767
typedef struct
{
char top[maxsize];//顶点表
int arc[maxsize][maxsize];//邻接矩阵
int topnum,arcnum;//顶点数 ,边数
}Graph;
int locate(Graph g,char n)
{
for(int i=0;i<g.topnum;i++)
{
if(g.top[i]==n)
return i;
else
{
printf("输入错误,程序结束\n");
exit(0);
}
}
}
int creat(Graph &g)//创建带权值无向网
{
char m,n;int i,j,k;
printf("请输入邻接矩阵的顶点数和边数\n");
scanf("%d%d",&g.topnum,&g.arcnum);
printf("请输入顶点表的内容\n");
getchar();
for( i=0;i<g.topnum;i++)
scanf("%c",&g.top[i]);
for( i=0;i<g.topnum;i++)//邻接矩阵的初始化
for( j=0;j<g.topnum;j++)
g.arc[i][j]=max;
printf("请输入每一条的连接的顶点及权值\n");
for( i=0;i<g.arcnum;i++)
{
getchar();
scanf("%c %c %d",&m,&n,&k);
i=locate(g,m);j=locate(g,n);//查找顶点对应的数组下标
g.arc[i][j]=g.arc[j][i]=k;
}
}
int printf01(Graph g)//邻接矩阵无向网的输出
{
for(int i=0;i<g.topnum;i++)
{
printf("%c\t",g.top[i]);
for(int j=0;j<g.topnum;j++)
printf("%d\t",g.arc[i][j]);
printf("\n");
}
}
int main()
{
Graph g;
creat(g);
printf01(g);
}