#include<stdio.h>#include<stdlib.h>#define MaxVertexNum 100 //顶点数目最大值typedef char VertexType; //顶点的数据类型typedef int EdgeType; //带权图边上权值的数据类型typedef struct{ VertexType vex[MaxVertexNum]; //顶点表 EdgeType Edge[MaxVertexNum][MaxVertexNum]; //边表(邻接矩阵) int vexnum,arcnum; //图当前顶点数和弧度数}MGraph;void CreatGraph(MGraph *g);void VisitGraph(MGraph g);int main(){ MGraph g; CreatGraph(&g); VisitGraph(g); return 0;}void CreatGraph(MGraph *g){ int i = 0,j = 0,k = 0,w = 0;//i,j,k为计数器,w则为边权值 if(g!=NULL) { printf("输入图顶点数和弧度数\n"); scanf("%d%d",&g->vexnum,&g->arcnum);//输入顶点,边个数 for(i = 0; i < g->vexnum;i++) { printf("输入第%d个顶点名称:\n",i); scanf("\n%c",&g->vex[i]);//输入顶点数据(名称) } printf("\n"); for(i = 0;i < g->vexnum;i++) //初始化邻接矩阵 { for(j = 0;j < g->vexnum;j++) { g->Edge[i][j] = 0; } } printf("请按照以下格式(i,j,w)输入:\n"); for(k = 0;k<g->arcnum;k++) { printf("请输入第%d对邻接点以及依附边的权值:",k+1); scanf("%d%d%d",&i,&j,&w); g->Edge[i][j] = w; } }}void VisitGraph(MGraph g){ int i = 0,j = 0; printf("邻接矩阵如下图示意:\n"); for(i = 0;i < g.vexnum;i++) { for(j = 0;j < g.vexnum;j++) { printf("%d ",g.Edge[i][j]); if(j == g.vexnum -1) printf("\n"); } }}