easyx下的最小生成树动态演示
- 普利姆算法
- 克鲁斯卡尔算法
下面展示一些函数需要用到的参数
#define MAXVEX 100
#define N 1000000000
typedef int EdgeType;
typedef struct
{
int begin;
int end;
int weight;
}Edge;
typedef struct
{
char data;
int x;
int y;
}Vertex;
typedef struct
{
Vertex graphVertex[MAXVEX];//顶点位置,数据
EdgeType graphEdge[MAXVEX][MAXVEX];//i,j之间权值
int vertexNum;//顶点数目
int edgeNum;//边数
}MGraph;
下面是程序部分函数
void initGraph(MGraph* G);
void createGraph(MGraph* G);
void printGraph(MGraph G);
void drawGraph(MGraph G);
void MinimumSpanningTree(MGraph G);
void Prim(MGraph G);
Edge* sortEdge(MGraph G);
void Kruskal(MGraph G);
void change();
void BGM();
创立一个图(从文件里面读取)
void initGraph(MGraph* G)
{
for(int i=0;i<G->vertexNum;++i)
{
for(int j=0;j<G->vertexNum;++j)
{
if (i!=j)
{
G->graphEdge[i][j]=N;
}
else
{
G->graphEdge[i][j]=0;
}
}
}
}
void createGraph(MGraph* G)
{
int i,j,k,weight;
FILE *fp;
fp=fopen("D:\\Graph.txt","r");
fscanf(fp,"%d,%d\n",&G->vertexNum, &G->edgeNum);
initGraph(G);
printf("顶点之间的关系:\n");
for(i=0;i<G->vertexNum;++i)
{
fscanf(fp,"%c,%d,%d\n",&G->graphVertex[i].data,&G->graphVertex[i].