[c]代码库
void Prim(int gm[ ][MAXNODE],int n,int closevertex[ ])
{/*用Prim 方法建立有n 个顶点的邻接矩阵存储结构的网图gm 的最小生成树*/
/*从序号为0 的顶点出发;建立的最小生成树存于数组closevertex 中*/
int lowcost[100],mincost;
int i,j,k;
for ( i=1; i<n; i++ ) /*初始化*/
{
lowcost[i]=gm[0][i];
closevertex[i]=0;
}
lowcost[0]=0; /*从序号为0 的顶点出发生成最小生成树*/
closevertex[0]=0;
for ( i=1; i<n; i++ ) /*寻找当前最小权值的边的顶点*/
{
mincost=MAXCOST; /*MAXCOST 为一个极大的常量值*/
j=1;
k=1;
while ( j<n )
{
if ( lowcost[j]<mincost && lowcost[j]!=0 )
{
mincost=lowcost[j];
k=j;
}
j++;
}
printf ( “顶点的序号=%d 边的权值=%d\n”,k,mincost );
lowcost[k]=0;
for ( j=1; j<n; j++ ) /*修改其它顶点的边的权值和最小生成树顶点序号*/
if ( gm[k][j]<lowcost[j] )
{
lowcost[j]=gm[k][j];
closevertex[j]=k;
}
}
}