无向带权图的邻接矩阵表示法

时间:2025-03-07 17:02:52
/*无向带权图的邻接矩阵表示法*/ #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); }