?? 7.10.c
字號:
/*普里姆算法描述如下:*/
struct
{
VertexData adjvex;
int lowcost;
}closedge[MAX_VERTEX_NUM]; /* 求最小生成樹時的輔助數組*/
MiniSpanTree_Prim(AdjMatrix gn,VertexData u)
/*從頂點u出發,按普里姆算法構造連通網gn 的最小生成樹,并輸出生成樹的每條邊*/
{
k=LocateVertex(gn, u);
closedge[k].lowcost=0; /*初始化,U={u} */
for(i=0;i<gn.vexnum;i++)
if (i!=k) /*對V-U中的頂點i,初始化closedge[i]*/
{
closedge[i].adjvex=u;
closedge[i].lowcost=gn.arcs[k][i].adj;
}
for(e=1;e<=gn.vexnum-1;e++) /*找n-1條邊(n= gn.vexnum) */
{
k0=Minium(closedge); /* closedge[k0]中存有當前最小邊(u0,v0)的信息*/
u0=closedge[k0].adjvex; /* u0∈U*/
v0=gn.vexs[k0]; /* v0∈V-U*/
printf("%d,%d",u0, v0); /*輸出生成樹的當前最小邊(u0,v0)*/
closedge[k0].lowcost=0; /*將頂點v0納入U集合*/
for(i=0;i<vexnum;i++) /*在頂點v0并入U之后,更新closedge[i]*/
if(gn.arcs[k0][i].adj<closedge[i].lowcost)
{
closedge[i].lowcost=gn.arcs[k0][i].adj;
closedge[i].adjvex=v0;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -