1、实验内容:
利用普里姆(Prim)算法或克鲁斯卡尔(Kruskal)算法求上图的最小生成树,算法实现代码必须有注释。
2、实现代码:
#include<iostream>
using namespace std;
//最小生成树的算法实现
//利用普里姆(Prim)算法或克鲁斯卡尔(Kruskal)算法求上图的最小生成树,算法实现代码必须有注释。
#define MVNum 100 //最大顶点数
int Vexset[MVNum]; //辅助数组Vexset的定义
#define MaxInt 32767 //表示极大值,即∞
//图的邻接矩阵
typedef struct
{
char vexs[MVNum]; //顶点表
int arcs[MVNum][MVNum]; //邻接矩阵
}Graph;
//用来记录从顶点集U到V-U的权值最小的边
struct
{
char adjvex; //最小边在U中的那个顶点
int lowcost; //最小边上的权值
}closedge[MVNum];
/*
struct
{
char Head; //边的始点
char Tail; //边的终点
int lowcost; //边上的权值
}Edge[(MVNum * (MVNum - 1)) / 2];
*/
void InitGraph(Graph &G, int vex)
{
cout << "输入点的名称,如a" << endl;
for (int i = 0; i < vex; ++i) {
cout << "请输入第" << (i + 1) << "个点的名称:";
cin >> G.vexs[i]; //依次输入点的信息
}
cout << endl;
for (int i = 0; i < vex;