数据结构图Prim算法最小生成树(C++)

#include
using namespace std;
typedef char VertexData;
typedef int EdgeData;
typedef struct
{
VertexData verlist[8];
EdgeData edge[8][8];
int n,e;
}MTGraph;
void CreateMGraph(MTGraph &G)
{

char zifu[]="abcdefgh";
int i,j,k,w;
cout<<"请输入顶点个数和边数:"<<endl;
cin>>G.n>>G.e;
for(i=0;i<G.n;i++)
{
	G.verlist[i]=zifu[i];
}
for(i=0;i<G.n;i++)//初始化邻接矩阵
{
	for(j=0;j<G.n;j++)
	{
		G.edge[i][j]=100;
	}
}
cout<<"请输入每条边的权值:"<<endl;
for(k=0;k<G.e;k++)//输入每条边的权值
{
	cin>>i>>j>>w;
	G.edge[i][j]=w;
	G.edge[j][i]=w;
}

}
void Prim(MTGraph &G)
{
int LOWCOST[8];
char CLOSEST[8];
int i,j,k;
int min;
for(i=0;i<G.n;i++)//初始化两个辅助数组
{
LOWCOST[i]=G.edge[0][i];
CLOSEST[i]=‘a’;
}
LOWCOST[0]=0;
cout<<“从顶点a开始”<<endl;//输出顶点vo,从vo开始
for(i=1;i<G.n;i++)//算法主要程序
{//
if(LOWCOST[i]!=0)
{
min=LOWCOST[i];
k=i;
for(j=0;j<G.n;j++)//找到LOWCOST中最小的路径
{
if(LOWCOST[j]<min&&LOWCOST[j]!=0)
{
min=LOWCOST[j];
k=j;
}
}
}
else//LOWCOST等于0时为选择过,跳到下一个
{
min=LOWCOST[i+1];
k=i+1;
for(j=0;j<G.n;j++)//找到LOWCOST中最小的路径
{
if(LOWCOST[j]<min&&LOWCOST[j]!=0)
{
min=LOWCOST[j];
k=j;
}
}
}
cout<<"("<<k<<","<<G.verlist[k]<<")"<<endl;
LOWCOST[k]=0;//更新数组
for(j=0;j<G.n;j++)//更新两个辅助数组
{
if(G.edge[k][j]<LOWCOST[j]&&LOWCOST[j]<101)
{
LOWCOST[j]=G.edge[k][j];
CLOSEST[j]=G.verlist[k];
}
}
}//
}
void main()
{
MTGraph G;
CreateMGraph(G);
Prim(G);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值