//严蔚敏《数据结构》
//最小生成树--Kruskal算法(每个顶点都是单个的连通分量/森林,将森林合并成树)
//自学中,加油!
#include<iostream>
#include<string>
using namespace std;
const int MaxVertexnum=20;
const int Infinity=INT_MAX;
#define InfoType string
#define VRType double
#define VertexType string
typedef enum{DG,DN,UDG,UDN} GraphKind;//不能#define GrapKind enum{DG,DN,UDG,UDN}
typedef struct
{
VRType adj;
InfoType* info;
}ArcCell,AdjMatrix[MaxVertexnum][MaxVertexnum];
typedef struct
{
VertexType vers[MaxVertexnum];
AdjMatrix arcs;
int vernum,arcnum;
GraphKind kind;
}MGraph;
struct fuzhuArray//新增结构体
{
VertexType head;
VertexType tail;
VRType lowcost;
}*Edge;
int Vexset[MaxVertexnum];//新增代码
int LocateVex(MGraph G,VertexType v)//返回点v在G.vers中的下标
{
for(int i=0;i!=G.vernum;i++){
if(G.vers[i]==v)
return i;
}
return -1;
}
void CreatUDN(MGraph& G)//创建无向网
{
cout<<"输入无向网的点和边的数量:";
cin>>G.vernum>>G.arcnum;
Edge=new struct fuzhuArray[G.arcnum];//新增代码
cout<<"输入"<<G.vernum<<"个点(类型为string)\n";
for(int i=0;i!=G.vernum;i++)
cin>>G.vers[i];
for(int i=0;i!=G.vernum;i++){//初始化邻接矩阵
for(int j=0;j!=G.vernum;j++){
G.arcs[i][j].adj=Infinity;
G.arcs[i][j].info=nullptr;
}
}
VertexType v1,v2;
2020-10-15 //严蔚敏《数据结构》 //最小生成树--Kruskal算法
最新推荐文章于 2023-06-08 21:13:57 发布