#include #include "LinkQueue.h" #include "Mgraph.h" #include using namespace std; const MAX_ARCNUM=50; // 最小生成树 //算法6.18 Prim算法 struct CEdge // 候选边存储 { int adjvex; // U中集合点 int lowcost; // 最小边的权值 }; int minEdge(CEdge closeEdge[],int n) { int i, k=0; int min = INF; for ( i=0; i bool Prim_MST(MGraph
G, DT v) // 从顶点v开始计算的最小生成树 { CEdge closeEdge[MAX_VEXNUM]; int i,j,k,mincost = 0; k=LocateVex(G,v); if(k==-1) // 顶点不存在 { cout<<"顶点不存在!"<edge[j+1].cost) // 2.1相邻元素逆序,互换位置 { temp=edge[j];edge[j]=edge[j+1];edge[j+1]=temp; // R[j]<-->R[j+1] exchange=true; // 2.2 交换标志改为true } } } } int parent[MAX_VEXNUM]; void Connect(int &x,int &y) // 连通分量标识 { if(x bool Kruskal_MST(MGraph
G) // 返回生成代价 { int mincost=0,Num_Edge=0; char u,v; int i,j,k=0; Edge edge[MAX_ARCNUM]; for(i=0;i G; int choice; do { DispMenu(); cin>>choice; switch(choice) { case 1: // 创建无向网 CreateUDN(G); cout<>v; Prim_MST(G,v); break; case 3: // Kruskal算法 Kruskal_MST(G); cout<