数据结构--最小生成树Prim 普里姆算法,Kruskal 克鲁斯卡尔算法

1.Analyse

来自两位科学家。

生成最小生成树,从0顶点出发,最小生成树包含所以顶点>_<,这个作业难道好像就是似乎改个矩阵?

最好还是把最小生成树变成一条路线,这样就不用去,自己找路线了。

题目图如图数据结构--最小生成树Prim 普里姆算法,Kruskal 克鲁斯卡尔算法_第1张图片


2.源自老师的Code Print

1Prim

#include 
#define MAXV 20			//最多顶点数
#define INF 32767       //INF表示∞
typedef char InfoType;
typedef struct
{
	int no;						//顶点编号
	InfoType info;				//顶点其他信息
} VertexType;					//顶点类型
typedef struct  				//图的定义
{
	int edges[MAXV][MAXV]; 		//邻接矩阵
   	int n,e;   					//顶点数,弧数
	VertexType vexs[MAXV];		//存放顶点信息
} MGraph;						//图的邻接矩阵类型

void Prim(MGraph g,int v)
{
	int lowcost[MAXV];			//顶点i是否在U中
	int min;
	int closest[MAXV],i,j,k;
	for (i=0;i

2.Kruskal

#include 
#define MaxSize 100
#define INF 32767	//INF表示∞
#define	MAXV 100	//最大顶点个数
typedef int InfoType;

typedef struct
{
	int no;						//顶点编号
	InfoType info;				//顶点其他信息
} VertexType;					//顶点类型
typedef struct  				//图的定义
{
	int edges[MAXV][MAXV]; 		//邻接矩阵
   	int n,e;   					//顶点数,弧数
	VertexType vexs[MAXV];		//存放顶点信息
} MGraph;						//图的邻接矩阵类型

typedef struct
{
	int u;			//边的起始顶点
    int v;			//边的终止顶点
    int w;			//边的权值
} Edge;

void InsertSort(Edge E[],int n) //对E[0..n-1]按递增有序进行直接插入排序
{
	int i,j;
	Edge temp;
	for (i=1;i=0 && temp.w

3.End

?_?,没有其他东西?

你可能感兴趣的:(学算法)