数据结构,最小生成树克鲁斯卡尔算法的实现

2026/1/27 14:27:32

k=j; } }

if (t[e[k].vexh].jihe!=t[e[k].vext].jihe) {

e[k].flag=1;

for (j=1;j<=G->n;j++)

if (t[j].jihe==t[e[k].vext].jihe) t[j].jihe=t[e[k].vexh].jihe; t[e[k].vext].jihe=t[e[k].vexh].jihe; i++;

} else e[k].flag=2; }

printf(\克鲁斯卡尔最小生成树:\\n\ for (i=0;ie;i++) if (e[i].flag==1)

printf(\%d\\n\输出最小生成树 }

该步骤应用的是克鲁斯卡尔算法,它的基本思想是:每次选不属于同一连通分量(保证不生成圈)且边权值最小的顶点,将边加入MST(Minimum Spanning Tree最小生成树),并将所在的2个连通分量合并,直到只剩一个连通分量。

7

流程如图4.2所示。

8

开始请输入该图的顶点数和边数G.e>(G.n-1)*G.n/2输入错误,请重新输入请输入该图的顶点信息i=1i<=G.ni++getchar();scanf(\(G.vexs[i]))i=1i++i<=G.nj=1j<=G.nj++ G.edges[i][j].w=0请输入该图每条边对应的两个顶点的名称K=1k<=G.e请输入第%d条边的顶点序号请输入第%d条边的权值K++大小i=1ch1!=G.vexs[i]j=1i++ch2!=G.vexs[j]return Gj++e[p].vexh=i;e[p].vext=j; e[p].weight=G.edges[i][j].w=ch3; //权值 e[p].flag=0;p++;结束图4.1

9

开始i=1i++i<=G->nt[i].data=G->vexs[i];t[i].jihe=i;i=1inmin=MaxVertexNum;j=0j++jee[j].weightnt[j].jihe==t[e[k].vext].jihet[j].jihe=t[e[k].vexh].jihe; t[e[k].vext].jihe=t[e[k].vexh].jihe; i++;i=0i++iee[i].flag==1输出最小生成树结束图4.2

10


数据结构,最小生成树克鲁斯卡尔算法的实现.doc 将本文的Word文档下载到电脑
搜索更多关于: 数据结构,最小生成树克鲁斯卡尔算法的实现 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219