void createUG(T a[],int n,int e); //无向图
void createUW(T a[],int n,int e); //无向网
void createHG(T a[],int n,int e); //有向图
void createHW(T a[],int n,int e); //有向网
};
template<class T>
Graph<T>::Graph(T a[],int n,int e){
int kind;
cout<<"请输入所需创建的图的类型:"<<endl;
cout<<"-----1.无向图-----"<<endl;
cout<<"-----2.无向网-----"<<endl;
cout<<"-----3.有向图-----"<<endl;
cout<<"-----4.有向网-----"<<endl;
cin>>kind;
switch(kind){
case 1:
createUG(a,n,e);break;
case 2:
createUW(a,n,e);break;
case 3:
createHG(a,n,e);break;
case 4:
createHW(a,n,e);break;
default:
cout<<"输入错误!"<<endl;
}
}
template <class T>
void Graph<T>::createUG(T a[],int n,int e)
{//创建无向图
vertexNum=n; //顶点数
arcNum=e; //边数
int i,j,k;
for (i=0; i<vertexNum; i++)
vertex[i]=a[i];
for (i=0; i<vertexNum; i++) //初始化邻接矩阵
for (j=0; j<vertexNum; j++)
arc[i][j]=0;
for (k=0; k<arcNum; k++)
//依次输入每一条边,并修改邻接矩阵的相应元素
{ cout<<"请输入第"<<k+1<<"条边(格式:顶点1 顶点2):"; cin>>i>>j; //边依附的两个顶点的序号
arc[i-1][j-1]=1; //置有边标志
arc[j-1][i-1]=1;