//严蔚敏《数据结构》
//最小生成树--Prim算法
//自学中,加油!
#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;
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;
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;
VRType w;
int i,j;
for(int k=0;k!=G.arcnum;k++){
cout<<"输入两个点以及两个点之间的权值\n";
cin>>v1>>v2>>w;
i=LocateVex(G,v1);j=LocateVex(G,v2);
G.arcs[i][j].adj=w;
G.arcs[j][i].adj=G.arcs[i][j].adj;
}
}
istream&
2020-10-14 //严蔚敏《数据结构》 //最小生成树--Prim算法
最新推荐文章于 2023-02-03 10:03:56 发布