c语言最小生成树,c语言实现最小生成树算法.pdf

最小生成树算法

C语言代码如下:

#include

#include

#define TURE 999

typedef struct ArcNode

{ char vexs[10];

int edgs[10][10];

int n,e;

}MGraph;

struct edg{

int v1;

int v2;

int cost;

}A[10],B[10];

//创建图

void GreateMGraph(MGraph *G)

{ int i,j,k,weight,m,n;

int ch1,ch2;

char a,b;

printf("请输入顶点数和边数(格式如4):");

scanf("%d %d",&(G->n),&(G->e)); //输入顶点数,边数

for(i 0;in;i++)

{

getchar();

printf("请输入第%d个顶点:",i+1);

scanf("%c",&(G->vexs[i])); //输入¨顶点

}

for(i 0;in;i++)

for(j 0;jn;j++)

G->edgs[i][j] 0;

for(k 0;ke;k++)

{

printf("请输入第%d条边的顶点权值(格式如¨i j):",k+1);

getchar();

scanf("%c %c %d",&a,&b,&weight);

m 0;n 0;

for(m 0;G->vexs[m]! a;m++);

for(n 0;G->vexs[n]!b;n++);

ch1 m;ch2 n;

G->edgs[ch1][ch2] weight;G->edgs[ch2][ch1] weight;

}

}

void prim(MGraph *G, int v)

{

int i,j,k,min;

struct

{ int adjvex;

int lowcost;

} closedge[10];

for (i 0;in;i++)

{

closedge[i].lowcost G->edgs[v][i];

closedge[i].adjvex v;

}

closedge[v].lowcost TURE;

for (i 1;in;i++)

{

min 100;

for(j 0;jn;j++)

if (closedge[j].lowcost! TURE && closedge[j].lowcost! 0)

{

if (closedge[j].lowcost

{

min closedge[j].lowcost;

k j;

}

}

printf("(%c,%c,%d) ", G->vexs[closedge[k].adjvex], G->vexs[k], min);

closedge[k].lowcost TURE;

for (j 0;jn;j++)

if (closedge[j].lowcost! TURE)

if(G->edgs[k][j]

{

closedge[j].lowcost G->edgs[k][j];

closedge[j].adjvex k;

}

}

}

int main(void)

{

MGraph *G,a; char ch1;

G &a;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值