#define N 100 /* 图的顶点数 */
#define E 100 /* 图的边数 */
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef char vextype; /* 顶点的数据类型 */
typedef float adjtype; /* 权值类型 */
typedef struct
{
vextype vexs[N]; /* 顶点 */
adjtype arcs[N][N]; /* 权值 */
}graph;
void creatgraph(graph *ga,int n,int e); /* 建立无向网络 */
main()
{
graph *ga;
int i,j,n,e; /* n是图的顶点数,e是图的边数 */
ga=(graph *)malloc(sizeof(graph));
printf("请输顶点数和边数:");
scanf("%d %d",&n,&e);
creatgraph(ga,n,e);
printf("无向网络的顶点:");
for(i=0;i<=n;i++)
printf("%c ",ga->vexs[i]);
printf("\n");
printf("图的路径形成的情况:\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%-2.0f",ga->arcs[i][j]);
printf("\n");
}
getchar();
}
void creatgraph(graph *ga,int n,int e) /* 建立无向网络 */
{
int i,j,k;
char a,c;
float w;
printf("请按顺序输入%d个顶点(按下标输入):",n);
for(i=0;i<=n;i++)
scanf("%c",&ga->vexs[i]); /* 读入顶点信息,建立顶点表 */
for(i=1;i<=n;i++)
{ for(j=1;j<=n;j++)
ga->arcs[i][j]=0; /* 邻接矩阵初始化 */
}
for(k=0;k<e;k++)
{
printf("请输入第%d条的起点、终点和权:\n",k+1);
scanf("%c%c%f",&a,&c,&w); /* 读入边(vi,vj)上的权w */
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
ga->arcs[i][j]=w;
ga->arcs[j][i]=w;
}
}
}