Kruskal算法简单实现如下:
void Kruskal(V,T){
T=V; //初始化树T,仅含顶点
numS=n; //连通分量数
while(numS>1){ //连通分量数>1
//从E中取出权值最小的边(v,u)
if(v和u属于不同连通分量){
T=T∪{(u,v)}; //将边加入树中
numS--; //连通分量数--
}
}
}
kruskal算法实现过程:
具体实现:
//储存各条边的信息
struct ed{
int Head; //头结点
int Tail; //尾节点
int lowcost; //权值
}Edge[MVNum];
//邻接矩阵
typedef struct{
//int vex[MVNum];
int arc[MVNum][MVNum];
int vexnum, arcnum;
}AMGraph;
int LocateVex(AMGraph *G,VerTexType v){
for(int i=0;i<G->vexnum;i++){
if(G->vex[i]==v)
return i;
}
return -1;
}
int CreateGraph()
{
MGraph* G;
G->vexnum=x;
G->arcnum=x;
//初始化为无穷
for(i=0;i<G->vexnum;i++){
for(j=0;j<G-