typedef struct ArcNode
{
int adjvex; //adjex域存储该边依附的在U中的顶点
VrType lowcost; //lowcost域存储该边上的权重
}closedge[MAX_VERTEX_NUM];
显然:
初始状态时,U={v1}(u1 为出发的顶点),则到V-U 中各项中最小的边,即依附顶点v1的各条边中,找到一条代价最小的边(u0,v0)= (1,3)为生成树上一条边。
同时将v0(=v3)并入集合U中。然后修改辅助数组的值。
1)将closedge[2].lowcost = 0;//表示顶点V3三已经并入U
2) 由于边(v2,v3)的权值小于closedge[1].lowcost,故需修改closedge[1]为边(v2,v3)及其权值,同理修改closedge[4],closedge[5].
closedge[1].adjvex = 3.
closedge[1].lowcost = 5.
closedge[4].adjvex = 1.
closedge[4].lowcost = 5.
closedge[5].adjvex = 3.
closedge[5].lowcost = 6.
以此类推,直至U = V;
下图给出了在用上述算法构造网图7.16的最小生成树的过程中:

Prim 算法实现:
按照算法框架:
(1)U={u1},T={};
(2)while (U≠V)do
(u,v)=min{wuv;u∈U,v∈V-U }
T=T+{(u,v)}
U=U+{v}










