#include<stdio.h>#include<stdlib.h>#include<string.h>typedefcharVertexType[5];//存储顶点值#defineMaxSize50#defineINIT10000typedefstruct//邻接矩阵,存储弧的信息{intadj;}ArcNode,AdjMatrix[MaxSize][MaxSize];typedefstruct//图的类型定义{VertexTypevex[MaxSize];//存储顶点值AdjMatrixarc;//邻接矩阵intarcnum,vexnum;//前者弧数,后者顶点数}MGraph;voidCreateVertex(MGraph*G)//创建邻接矩阵{inti,j,k,w;VertexTypev1,v2;printf("请输入有向带权图的顶点数和弧数:(空格间隔)\n");scanf("%d%d",&(*G).vexnum,&(*G).arcnum);printf("请输入%d个顶点的值:\n",G->vexnum);for(i=0;i<G->vexnum;i++){scanf("%s",&G->vex[i]);}for(i=0;i<G->vexnum;i++)//初始化邻接矩阵{for(j=0;j<G->vexnum;j++){G->arc[i][j].adj=INIT;}}printf("请输入%d条弧的弧尾,弧头和权值:\n",G->arcnum);for(k=0;k<G->arcnum;k++){scanf("%s%s%d",v1,v2,&w);i=LocateVertex(*G,v1);j=LocateVertex(*G,v2);G->arc[i][j].adj=w;}}intLocateVertex(MGraphG,VertexTypev)//索引{inti;for(i=0;i<G.vexnum;i++){if(strcmp(G.vex[i],v)==0){returni;}}return-1;}voidDisplayVertex(MGraphG)//输出{inti,j;printf("%d个顶点的值为:",G.vexnum);for(i=0;i<G.vexnum;i++){printf("%s",G.vex[i]);}printf("\n有向带权图\n");printf("序号:");for(i=0;i<G.vexnum;i++){printf("%8d",i);}printf("\n");for(i=0;i<G.vexnum;i++){printf("%8d",i);for(j=0;j<G.vexnum;j++){printf("%8d",G.arc[i][j].adj);}printf("\n");}}intmain(void){MGraphG;printf("创建图:\n");CreateVertex(&G);printf("输出图:");DisplayVertex(G);printf("\n");return0;}