无向带权图的邻接矩阵表示法
/*无向带权图的邻接矩阵表示法*/
#include<>
#define vnum 20
typedef struct gp
{
int vexs[vnum]; /*顶点信息*/
int arcs[vnum][vnum]; /*邻接矩阵*/
int vexnum,arcnum; /*顶点数、边数*/
}WGraph;
void CreateGraph(WGraph *g,int v,int e) /*初始化邻接矩阵*/
{
int i,j;
g->vexnum=v;
g->arcnum=e;
for(i=0;i<g->vexnum;i++)
for(j=0;j<g->vexnum;j++)
g->arcs[i][j]=0;
}
void InsertVex(WGraph *g) /*读入顶点信息*/
{
int i;
for(i=0;i<g->vexnum;i++)
{
printf("第%d个顶点:\n",i+1);
scanf("%d",&(g->vexs[i]));
}
}
void InsertArc(WGraph *g) /*插入边和权值*/
{
int i,j,k,w;
for(k=0;k<g->arcnum;k++)
{
scanf("%d %d %d",&i,&j,&w);
g->arcs[i][j]=w;
g->arcs[j][i]=w;
}
}
void OutGraph(WGraph *g) /*输出矩阵*/
{
int i,j;
for(i=0;i<g->vexnum;i++)
{
for(j=0;j<g->vexnum;j++)
printf("%d ",g->arcs[i][j]);
printf("\n");
}
}
main()
{
WGraph g;
int x,n;
printf("读入顶点个数:\n");
scanf("%d",&x);
printf("读入边数:\n");
scanf("%d",&n);
CreateGraph(&g,x,n);
printf("读入顶点信息:\n");
InsertVex(&g);
printf("插入边\n");
InsertArc(&g);
printf("输出矩阵\n");
OutGraph(&g);
}