#include <iostream>
using namespace std;
#define Max 3200
#define MaxNum 10
struct Graph
{
 char *Vex = new char[vexnum];//顶点数组
 int Arc[MaxNum][MaxNum];//边
 int vexnum;//顶点数
 int arcnum;//边数
};
void CreateUDN(Graph *&G)//邻接矩阵创建无向网G
{
 cout << "请输入总顶点数,总边数:";
 cin >> G->vexnum;
 cin >> G->arcnum;
 cout << "依次输入顶点的信息(字母):";
 for (int i = 0; i < G->vexnum; i++)
 cin >> G->Vex[i];
 for (int i = 0; i < MaxNum; i++)//初始化邻接矩阵,边的权值均为Max
 for (int j = 0; j < MaxNum; j++)
 G->Arc[i][j] = Max;
 for (int k = 0; k < G->arcnum; k++) //构造邻接矩阵
 {
 int v1, v2;
 int w;
 cout << "请依次输入每条边依附的两个顶点及权值:";
 cin >> v1 >> v2 >> w;
 G->Arc[v1][v2] = w; //边v1到v2的权值为w
 G->Arc[v2][v1] = G->Arc[v1][v2];//v1到v2的对称边v2到v1的权值为w
 }
}
void main()
{
 Graph *G;
 CreateUDN(G);
 cout << endl;
}
#include <iostream>
using namespace std;
#define Max 3200
#define MaxNum 10
struct Graph
{
 char *Vex ; // = new char[vexnum];//顶点数组
 int Arc[MaxNum][MaxNum];//边
 int vexnum;//顶点数
 int arcnum;//边数
bool AllocVex(int nVexnum) 
 {
 Vex = new char[nVexnum] ;
 if (Vex == NULL) return false ;
 return true ;
 }
Graph()
 {
 Vex = NULL ;
 }
~Graph()
 {
 if (Vex != NULL) delete [] Vex ;
 }
};
void CreateUDN(Graph *&G)//邻接矩阵创建无向网G
{
 cout << "请输入总顶点数,总边数:";
 cin >> G->vexnum;
 cin >> G->arcnum;
G->AllocVex(G->vexnum) ;
cout << "依次输入顶点的信息(字母):";
 for (int i = 0; i < G->vexnum; i++)
 cin >> G->Vex[i];
 for (int i = 0; i < MaxNum; i++)//初始化邻接矩阵,边的权值均为Max
 for (int j = 0; j < MaxNum; j++)
 G->Arc[i][j] = Max;
 for (int k = 0; k < G->arcnum; k++) //构造邻接矩阵
 {
 int v1, v2;
 int w;
 cout << "请依次输入每条边依附的两个顶点及权值:";
 cin >> v1 >> v2 >> w;
 G->Arc[v1][v2] = w; //边v1到v2的权值为w
 G->Arc[v2][v1] = G->Arc[v1][v2];//v1到v2的对称边v2到v1的权值为w
 }
}
void main()
{
 Graph *G = new Graph() ; 
 CreateUDN(G);
 cout << endl;
delete G ;
}