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

墨蓝 2022-06-15 10:55 653阅读 0赞
  1. /*无向带权图的邻接矩阵表示法*/
  2. #include<stdio.h>
  3. #define vnum 20
  4. typedef struct gp
  5. {
  6. int vexs[vnum]; /*顶点信息*/
  7. int arcs[vnum][vnum]; /*邻接矩阵*/
  8. int vexnum,arcnum; /*顶点数、边数*/
  9. }WGraph;
  10. void CreateGraph(WGraph *g,int v,int e) /*初始化邻接矩阵*/
  11. {
  12. int i,j;
  13. g->vexnum=v;
  14. g->arcnum=e;
  15. for(i=0;i<g->vexnum;i++)
  16. for(j=0;j<g->vexnum;j++)
  17. g->arcs[i][j]=0;
  18. }
  19. void InsertVex(WGraph *g) /*读入顶点信息*/
  20. {
  21. int i;
  22. for(i=0;i<g->vexnum;i++)
  23. {
  24. printf("第%d个顶点:\n",i+1);
  25. scanf("%d",&(g->vexs[i]));
  26. }
  27. }
  28. void InsertArc(WGraph *g) /*插入边和权值*/
  29. {
  30. int i,j,k,w;
  31. for(k=0;k<g->arcnum;k++)
  32. {
  33. scanf("%d %d %d",&i,&j,&w);
  34. g->arcs[i][j]=w;
  35. g->arcs[j][i]=w;
  36. }
  37. }
  38. void OutGraph(WGraph *g) /*输出矩阵*/
  39. {
  40. int i,j;
  41. for(i=0;i<g->vexnum;i++)
  42. {
  43. for(j=0;j<g->vexnum;j++)
  44. printf("%d ",g->arcs[i][j]);
  45. printf("\n");
  46. }
  47. }
  48. main()
  49. {
  50. WGraph g;
  51. int x,n;
  52. printf("读入顶点个数:\n");
  53. scanf("%d",&x);
  54. printf("读入边数:\n");
  55. scanf("%d",&n);
  56. CreateGraph(&g,x,n);
  57. printf("读入顶点信息:\n");
  58. InsertVex(&g);
  59. printf("插入边\n");
  60. InsertArc(&g);
  61. printf("输出矩阵\n");
  62. OutGraph(&g);
  63. }

发表评论

表情:
评论列表 (有 0 条评论,653人围观)

还没有评论,来说两句吧...

相关阅读