连通图的最小代价生成树成为最小生成树。
这里采用图的邻接矩阵存储结构来存储边上的权值。
将图中的n个节点按0~n-1编号,最后最小生成树的输出形式是两个节点编号代表的边。
以下程序在DEV C++中调试通过。
/*图的邻接矩阵存储结构和Prim算法实现最小生成树*/
#include <stdio.h>
#define MaxVertexNum 9
#define INFINITY 65535
typedef char VertexType; //顶点是字符型
typedef int EdgeType; //边是整型
typedef struct //图的邻接矩阵存储结构
{
VertexType vexs[MaxVertexNum]; //顶点向量
EdgeType edges[MaxVertexNum][MaxVertexNum]; //邻接矩阵
int vexnum,arcnum; //图中当前的顶点数和边数
}MGraph;
/* 邻接矩阵的建立*/
void CreateGraph(MGraph *G)
{
int i,j,k,weight;
char ch1,ch2;
printf("请输入顶点数和边数(输入格式为:顶点数,边数):");
scanf("