最小生成树kruskal算法-数据结构课程设计

最小生成树kruskal算法-数据结构课程设计|数据结构课程设计

/*
Name:最小生成树kruskal算法
Author:wujilin
Description:用邻接矩阵做图
Date: 21-07-06 23:07
Copyright:wujilin
*/

#include<stdio.h>
#include<stdlib.h>
#define M 20
#define MAX 20

typedef struct
{
int begin;
int end;
int weight;
}edge;

typedef struct
{
int adj;
int weight;
}AdjMatrix[MAX][MAX];

typedef struct
{
AdjMatrix arc;
int vexnum, arcnum;
}MGraph;
void CreatGraph(MGraph *);//函数申明
void sort(edge* ,MGraph *);
void MiniSpanTree(MGraph *);
int  Find(int *, int );
void Swapn(edge *, int, int);
void CreatGraph(MGraph *G)//构件图
{
int i, j,n, m;

printf("请输入边数和顶点数:");
scanf("%d %d",&G->arcnum,&G->vexnum);

for (i = 1; i <= G->vexnum; i++)//初始化图
{
for ( j = 1; j <= G->vexnum; j++)
{
G->arc[i][j].adj = G->arc[j][i].adj = 0;
}
}

for ( i = 1; i <= G->arcnum; i++)//输入边和权值
{
printf("\n请输入有边的2个顶点");
scanf("%d %d",&n,&m);
while(n < 0 || n > G->vexnum || m < 0 || n > G->vexnum)
{
printf("输入的数字不符合要求 请重新输入:");
scanf("%d%d",&n,&m);
}

G->arc[n][m].adj = G->arc[m][n].adj = 1;
getchar();
printf("\n请输入%d与%d之间的权值:", n, m);
scanf("%d",&G->arc[n][m].weight);
}

printf("邻接矩阵为:\n");
for ( i = 1; i <= G->vexnum; i++)
{
for ( j = 1; j <= G->vexnum; j++)
{
printf("%d ",G->arc[i][j].adj);
}
printf("\n");
}
}

[1] [2] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有