下载此文档

数据结构—最小生成树.docx


文档分类:IT计算机 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
数据结构—最小生成树.docx实验:最小生成树
一、 程序设计简介
本验证程序实现了 Prim算法。程序提供图的创建和用Prim求最小生成树。图的存储采 用了数组存储。运行结果输出创建的图信息及求得的最小生成树。
二、 源程序
(1 )Minitree_prim= w;// <v2, vl>
}
= 3;
return true;
}
template <class T>
void MGraph<T>::DestroyGraph()// 销毁图
for(int i = 0 ;i<;i++)
for(int j = i+1 ;j<;j++)
if( [i] [j] .info) {
delete [][i][j].info;
mgraph. arcs [i][j]. info = mgraph. arcs [j][i]. info = false; }
}
= 0;
= 0;
}
template <class T>
int MGraph<T>::Locate Vex(T u)〃确定顶点在图中的位置
(
for(int i = 0 ;i<MAX_VERTEX_NUM;i++)
{
if(u == [i])
(
return i;
}
}
return -1;
}
template <class T>
int MGraph<T>::Minimum(miniside<T> SZ [MAX_VERTEX_NUM]) 〃求辅助数组sz中的lowcost的最小正值
{
int i = 0,min,k,j;
while(! SZ[i].lowcost)
(
i++;
)
min = SZ[i].lowcost;//找到第一个非 0 值
k = i;//k先存放第一个非0值的位置
for(j = i+1 ;j<;j++)
〃在第一个非0值之后开始依次寻找较小值并且记录位置
(
if(SZ[j] .lowcost>0)
{
if(min>SZ[j ] .lowcost)
〃找到较小值
min = SZ[j].lowcost;
k = j;〃记录较小值的位置
}
return k;
)
template <class T>
void MGraph<T>::MiniSpanTree_PRIM(T u) 〃用普利姆算法从顶点u开始构造网的最
小生成树,并输出各条边
{
int i,j,k;
miniside<T> closedge[MAX_VERTEX_NUM];
k = Locate Vex(u);
for(j = O;j<;j++)
〃初始化辅助数组
{
if(j!=k)
{
closedgefj ] .adj vex = u;
closedgefj ] .lowcost = mgraph. arc s [k] [j ]. adj;
}
}
closedge[k].lowcost = 0 ;〃初始化顶点集 U = {u}
cout«"最小生成树的各条边依次为:” v<endl;
for(i = 1 ;i<;i++)
〃期许 -1 个顶点
{
k = Minimum(closedge); 〃求出下一个结点的位置
cout«closedge[k].adjvex«n-n«[k]« ”权 值:
"«closedge[k] .lowcost «endl;
closedge[k].lowcost = 0;//将位置为k的顶点并入u集合
for(j = 0 ;j <;j ++)
〃新顶点并入u集后重新选择最小边
{
if( [k] [j ] .adj<closedge[j ] .lowcost)
{
closedge[j].adjvex 二 [k];
closedgefj ] .lowcost = [k] (j] .adj;
}
#endif
(2)
#include <iostream>
#include <string>
using namespace std;
#include "
void opeshow()
{

数据结构—最小生成树 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小雄
  • 文件大小95 KB
  • 时间2022-02-17