Prim.h
上传用户:hbxtsdjs
上传日期:2022-04-11
资源大小:1594k
文件大小:1k
源码类别:

电子书籍

开发平台:

C/C++

  1. void Prim(AdjMWGraph G)
  2. /*用普里姆方法建立网G的最小生成树closeVertex */
  3. {
  4. int n = G.Vertices.size, minCost;
  5. int *lowCost = (int *)malloc(sizeof(int)*n);
  6. int i, j, k;
  7.  
  8. /*从序号为0的顶点出发构造最小生成树*/
  9. printf("顶点值 = %cn", G.Vertices.list[0]);
  10. for(i = 1; i < n; i ++)
  11. lowCost[i] = G.edge[0][i];
  12. lowCost[0] = -1;
  13. for(i = 1;i < n;i++) 
  14. {
  15. /*寻找当前最小权值的边的顶点 */
  16. minCost = MaxWeight; /*MaxWeight为定义的最大权值 */
  17. j = 1; 
  18. k = 1;
  19. while(j < n)
  20. {
  21. if(lowCost[j] < minCost && lowCost[j] != -1)
  22. {
  23. minCost = lowCost[j];
  24. k = j;
  25. }
  26. j ++;
  27. }
  28. printf("顶点值 = %c  边的权值 = %dn", G.Vertices.list[k], minCost);
  29. lowCost[k] = -1;
  30. /*修改到其它顶点的路径值*/
  31. for(j = 1; j < n; j++)
  32. if(G.edge[k][j] < lowCost[j])
  33. lowCost[j] = G.edge[k][j];
  34. }
  35. }
  36. free(lowCost);
  37. }