源代码如下:
#include<iostream>
using namespace std;
#define MAX_VERTEX_NUM 20
#define infinity 9
typedef int QElemType;
typedef int EdgeData;
typedef char VertexData;
typedef struct
{
VertexData verlist[MAX_VERTEX_NUM]; //顶点表
EdgeData edge[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵--可试为边之间的关系
int vexnum,edgenum; //顶点数和边数
}MTGraph;
void printMTGragh(MTGraph *G){
int i,j;
for (i = 1 ; i <= G->vexnum ; i++){
for (j = 1 ; j <= G->vexnum ; j++)
cout<<G->edge[i][j]<<" ";
cout<<endl;
}
// Prim(G,G->edge);
}
void Prim(MTGraph *G){ //集合V-U的顶点尚未加入最小生成树中,集合U则已加入
int lowcost[MAX_VERTEX_NUM+1]; //用来保存集合V-U中各顶点与集合U中顶点最短边的权值,
// lowcost[v] = infinity 表示顶点V已加入了最小生成树中
int closest[MAX_VERTEX_NUM+1]; //用来保存依附于该边的在集合U的顶点
//