1.c语言最小生成树怎样写prim算法/* 函数功能:求图的最小生成树 。
函数原形:GraphClass
备注:无 。*/ template GraphClass
函数原形:GraphClass
备注:无 。*/ template GraphClass
2.求我下面程序函数的流程图普里姆算法
功能:是利用普里姆算法求出无向网所对应的最小生成树.
实现过程:在其函数体中,首先,定义closedge用于存放最小生成树中的顶点,调用函数Locate()求出起点u在顶点向量表中的位置,初始化U={u},利用for循环对V-U中的顶点i,初始化,再利用for循环找n-1条边,其中,调用函数Minium()求出辅助数组中权值最小的边,并将其在辅助数组中的相应位置返回到主调函数中,最后,输出<;起点->;终点 权值> 。
代码如下:
void PRIM(MGraph &G,VertexType u)
{
int i,j,k;
minside closedge;
k=LocateVex(G,u);
for(j=0;j<G.vexnum;++j) // 辅助数组初始化
【最小生成树中minium函数怎么写】{
if(j!=k)
{
strcpy(closedge[j].adjvex,u);
closedge[j].lowcost=G.arcs[k][j].adj;
}
}
closedge[k].lowcost=0; // 初始,U={u}
printf("\t\t最小代价生成树的各条边及权值为:\n");
printf("\n");
printf("\t\t<;起点->;终点>\t权值\n");
for(i=1;i<G.vexnum;++i)
{ // 选择其余G.vexnum-1个顶点
k=minimum(closedge,G); // 求出T的下一个结点:第K顶点
printf("<%s-%s>\t\t%d\n",closedge[k].adjvex,G.vexs[k],closedge[k].lowcost); // 输出生成树的边
closedge[k].lowcost=0; // 第K顶点并入U集
for(j=0;j<G.vexnum;++j)
if(G.arcs[k][j].adj<closedge[j].lowcost)
{
// 新顶点并入U集后重新选择最小边
strcpy(closedge[j].adjvex,G.vexs[k]);
closedge[j].lowcost=G.arcs[k][j].adj;
}
}
}
(5)子函数int LocateVex(MGraph G,VertexType u)
功能:是求出某个顶点在顶点向量表中的位置 。
实现过程:在其函数体中通过for循环将某一顶点与顶点向量表中的所有顶点进行比较,当出现两者相等时,将该顶点在vexs[]数组的下标通过return语句返回,否则返回-1;
- c语言中最小值代码怎么写
- 关于新型中心体蛋白CCDC74B对纤毛生成的调控作用和机制的简介 新型中心体蛋白CCDC74B对纤毛生成的调控作用和机制
- 易语言最小化到托盘命令怎么写
- 四大洋中面积最小的是哪一个 四大洋中什么的面积最小
- 个人签名在线生成器 在线自动生成签名
- cad电子签名生成器 如何生成cad电子签名
- 胸罩的尺寸有哪些 胸罩最小的尺寸是多少
- 盖章生成器 印章生成器 在线 制作
- 压缩包如何压缩到最小 压缩包怎么压到最小
- 图表目录怎么自动生成 图表目录怎么自动生成不用题注的方式