虽说是生成树,但我只将生成的边输出了。至于怎么用这些边来创建树。。。我不知道_(:з」∠)_ 

 

 1 //Prime方法生成最小生成树
 2 void GraphAdjacencyListWeight::GenerateMSCPPrime(int FirstVertex) {
 3     int *visited = new int[VertexNumber];
 4     memset(visited, 0, VertexNumber * sizeof(int));
 5     //-1代表没用到
 6     //0代表此点已放进容器
 7     CLOSEEDGE *CloseEdge = new CLOSEEDGE[VertexNumber];
 8     for (int lop = 0; lop < VertexNumber; lop++) {
 9         CloseEdge[lop].Weight = -1;
10         CloseEdge[lop].StartVer = -1;
11     }
12 
13     CloseEdge[FirstVertex].StartVer = 0;
14     CloseEdge[FirstVertex].Weight = 0;
15     //起点放进容器
16     visited[FirstVertex] = 1;
17 
18     //将起点的邻接信息放入CloseEdge
19     for (auto tmpPtr = (VectorVertexList[FirstVertex])->firstArc; tmpPtr != nullptr; tmpPtr = tmpPtr->nextArc) {
20         CloseEdge[tmpPtr->AdjacencyNode].StartVer = FirstVertex;
21         CloseEdge[tmpPtr->AdjacencyNode].Weight = tmpPtr->weight;
22     }
23 
24     int k = -1;
25     while (!IsAllVisited(visited)) {
26         k = SearchMinWeight(CloseEdge);
27         //输出生成的边
28         cout << "(" << CloseEdge[k].StartVer << " , " << VectorVertexList[k]->VertexIndex << ")" << endl;
29         visited[k] = 1;
30 
31         UpdateCloseEdge(CloseEdge, k);
32     }
33 
34     //销毁
35     delete[]visited;
36     delete[]CloseEdge;
37 }
Prime

相关文章:

  • 2021-08-01
  • 2021-08-01
  • 2019-01-31
  • 2021-09-12
  • 2018-07-08
  • 2019-12-10
  • 2022-01-21
  • 2021-03-05
猜你喜欢
  • 2021-07-05
  • 2019-02-06
  • 2021-09-19
  • 2021-09-09
  • 2021-12-11
  • 2021-08-01
  • 2021-08-01
相关资源
相似解决方案