Prim算法---邻接矩阵实现
求最小生成树。
C语言实现:
代码实现:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_LEN 20
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INTMAX 0xFFFF
typedef char type[20];
int visit[MAX_LEN];
int TreeSum = 0; ///-------树的权值
int PrimTree[MAX_LEN];///-----树的边
typedef struct MGraph{///-----图
int vexnum;//---顶点数
int arcnum;//---弧数
int dist[MAX_LEN];//---边的最小权重
type vexs[MAX_LEN];//---顶点信息
int weight[MAX_LEN][MAX_LEN];//-----权重
}MGraph;
typedef struct Queue{///-----广度优先遍历----队列--------
int front;
int rear;
int data[MAX_LEN+1];
}Queue;
void CreateGraph( MGraph * g )///--------------建立无向图-----------------------
{
int i , j , k , weight;
type v1 , v2 ;
printf("请输入顶点数,边数:\n");
scanf("%d %d",&g->vexnum , &g->arcnum );
printf("\n请输入%d定点信息:\n",g->vexnum);
for( i = 0 ; i < g->vexnum ; i++)
scanf("%s",g->vexs[i]);
for( i = 0 ; i < g->vexnum ; i++)
for( j = 0 ; j < g->vexnum ; j++)
g->weight[i][j] = INTMAX;
printf("\n请输入%d条弧的 两两关系 及 权重 :\n",g->arcnum);
for( k = 0 ; k < g->arcnum ; k++