Prim算法
void Prim(int v)
{
int i,j,k;
int adjvex[MaxSize].lowcost[MaxSize];
for(i=0;i<vertexNum;i++)
{
lowcost[i]=edge[v][i];adjvex[i]=v;
}
lowcost[v]=0;
for(k=1;k<vertexNum;k++)
{
j=MinEdge(lowcost,vertexNum);
cout<<j<<adjvex[j]<<lowcost[j]<<endl;
lowcostj]=0;
for(i=0;i<vertexNum;i++)
if(edge[i][j]<lowcost[i])
{
lowcost[i]=edge[i][j];
adjvex[i]=j;
}
}
}
Kruskal算法
void Kruskal()
{
int num=0,i,vex1,vex2;
int parent[vertexNum];
for(i=0;i<vertexNum;i++)
parent[i]=-1;
for(num=0,i=0;num<vertexNum-1;i++)
{
vex1=FindRoot(parent.edge[i].from);
vex2=FindRoot(parent,edge.edge[i].to);
if(vex1 != vex2)
{
cout<<"("<<edge[i].from<<","<<edge[i].to<<")"<<edge[i].weight;
parent[vex2]=vex1;
num++;
}
}
}
int FindRoot(int parent[],int v)
{
int t=v;
while(parent[t]>-1)
t=parent[t];
return t;
}