1. #include<stdio.h>
    2. #include<stdlib.h>
    3. #define MaxVertexNum 100 //顶点数目最大值
    4. typedef char VertexType; //顶点的数据类型
    5. typedef int EdgeType; //带权图边上权值的数据类型
    6. typedef struct{
    7. VertexType vex[MaxVertexNum]; //顶点表
    8. EdgeType Edge[MaxVertexNum][MaxVertexNum]; //边表(邻接矩阵)
    9. int vexnum,arcnum; //图当前顶点数和弧度数
    10. }MGraph;
    11. void CreatGraph(MGraph *g);
    12. void VisitGraph(MGraph g);
    13. int main(){
    14. MGraph g;
    15. CreatGraph(&g);
    16. VisitGraph(g);
    17. return 0;
    18. }
    19. void CreatGraph(MGraph *g){
    20. int i = 0,j = 0,k = 0,w = 0;//i,j,k为计数器,w则为边权值
    21. if(g!=NULL)
    22. {
    23. printf("输入图顶点数和弧度数\n");
    24. scanf("%d%d",&g->vexnum,&g->arcnum);//输入顶点,边个数
    25. for(i = 0; i < g->vexnum;i++)
    26. {
    27. printf("输入第%d个顶点名称:\n",i);
    28. scanf("\n%c",&g->vex[i]);//输入顶点数据(名称)
    29. }
    30. printf("\n");
    31. for(i = 0;i < g->vexnum;i++) //初始化邻接矩阵
    32. {
    33. for(j = 0;j < g->vexnum;j++)
    34. {
    35. g->Edge[i][j] = 0;
    36. }
    37. }
    38. printf("请按照以下格式(i,j,w)输入:\n");
    39. for(k = 0;k<g->arcnum;k++)
    40. {
    41. printf("请输入第%d对邻接点以及依附边的权值:",k+1);
    42. scanf("%d%d%d",&i,&j,&w);
    43. g->Edge[i][j] = w;
    44. }
    45. }
    46. }
    47. void VisitGraph(MGraph g){
    48. int i = 0,j = 0;
    49. printf("邻接矩阵如下图示意:\n");
    50. for(i = 0;i < g.vexnum;i++)
    51. {
    52. for(j = 0;j < g.vexnum;j++)
    53. {
    54. printf("%d ",g.Edge[i][j]);
    55. if(j == g.vexnum -1)
    56. printf("\n");
    57. }
    58. }
    59. }