C++数据结构-普利姆算法最小生成树

#include <iostream>
#define MAXVEX 6       //结点数(初始默认6顶点,更改的话直接在这里修改即可)
#define MAXEDGE 10     //边数(初始默认10条边,更改的话直接在这里修改即可)
#define INFINITY 65535 //表示无穷大
using namespace std;

//普利姆最小生成树原理:
//步骤1:确定s和c两个集合,s放生成树结点,c放其余结点
//步骤2:先选一个结点1放入s,此时结点1在s中,其余结点在c中
//步骤3:在与s中的结点1相邻的结点中选出权值最小的那个结点2放入s中,此时s中有结点1和2
//步骤4:在与s中的结点1(结点2)相邻的结点中选出权值最小的那个结点3放入s中,此时s中有结点1和2和3
//步骤5:以此类推........

//下面代码是无向图的邻接矩阵的普利姆算法
//注意点:下标0的位置都不用,所以要多开辟一个空间
//若改为有向图的邻接矩阵普利姆算法,则:
//1.删除下面的一句代码g.matrix[n][m]=1;

typedef struct
{
   
    int  vexNum;                 //顶点数
    int  edgeNum;                //边数
    int  matrix[MAXVEX+1][MAXVEX+1]; //二维数组表示矩阵
    char vexinfo[MAXVEX+1];        //存放结点数组的值(如A,B,C,D)
}AdjMatr;                        //邻接矩阵

/*********************初始化邻接矩阵************************/
void initAdjMatr(AdjMatr &g )
{
   
    g.vexNum = MAXVEX;   //顶点数
    g.edgeNum = MAXEDGE; //边数
    //初始化矩阵信息,初始为,一个不可能的数字表示这两个顶点之间不存在边
    for(int i=1;i<=MAXVEX;i++)
    
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值