#include<iostream>
#include<stdlib.h>
#include<iomanip>
#include<stdio.h>
#include<stack>
using namespace std;
#define MAX_VERTEX_NUM 100//最大顶点个数
#define INFINITY 10000//最大值
#define FALSE 0
#define TRUE 1
typedef int VRType; //顶点关系(表示是否相邻)
typedef char VertexType;
typedef int InfoType;//弧相关信息
typedef enum{DG,DN,UDG,UDN} GraphKind;//{有向图,有向网,无向图,无向网}
typedef struct ArcCell{
VRType adj;//权值
InfoType *info;//该弧相关信息的指针
}ArcCell,AdjMartix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
typedef struct{
VertexType vexs[MAX_VERTEX_NUM]; //顶点向量
AdjMartix arcs; //邻接矩阵
int vexnum,arcnum; //图当前顶点数,弧数
GraphKind Kind; //图的类型
}MGraph;
int LocateVex(MGraph G,VertexType v){ //若图中存在v,返回v在图中的位置
for(int i=0;i<G.vexnum;i++){
if(v==G.vexs[i])
return i;
}
return -2;
}
//***********************创建无向网的邻接矩阵**********************
int CreatMUDN(MGraph &G){ //构造无向网
int i,j,w;
char ch;
VertexType v1,v2;
cout<<"输入顶点数,弧数:"<<endl;
cin>>G.vexnum>>G.arcnum; //输入当前顶点数弧数是否有弧信息
cout<<"输入顶点(字符型):"<<endl;
for(i=0;i<G.vexnum;i++){ //初始化邻接矩阵
for(j=0;j<G.vexnum;j++){
G.arcs[i][j].adj=INFINITY;
G.arcs[i][j].info=NULL;
}
}
for(i=0;i<G.vexnum;i++){ //顶点信息
cout<<"输入第"<<i+1<<"个顶点:";
cin>>ch;
G.vexs[i]=ch;
}
for(int k=0;k<G.arcnum;k++){
cout<<"输入第"<<k+1<<"条弧:"<<endl;
cin>>v1>>v2;
cout<<"输入弧的权值:"<<endl;
cin>>w;
if((i=LocateVex(G,v1))!=-2)//
if((j=LocateVex(G,v2))!=-2){
G.arcs[i][j].adj=w;//对弧写入权值