1顶点数
2边数
3顶点表
4邻接矩阵
#include<iostream>
using namespace std;
#define MAXVEX 100 /* 最大顶点数,应由用户定义 */
#define INFINITY 65535 /* 表示权值的无穷*/
typedef int EdgeType; /* 边上的权值类型应由用户定义 */
typedef char VertexType; /* 顶点类型应由用户定义 */
typedef struct{
int numNodes,numEdges; //1\2
VertexType vexs[MAXVEX]; //3
EdgeType arc[MAXVEX][MAXVEX];//4
}MGraph;
/* 建立无向网图的邻接矩阵表示 */
void CreateMGraph(MGraph *Gp){
int i,j,k,w;
cout << "请输入顶点数和边数(空格分隔):" << endl;
cin >> Gp->numNodes >> Gp->numEdges;
for(i = 0;i<Gp->numNodes;i++)
cin>>Gp->vexs[i];
for(i = 0;i<Gp->numEdges;i++){
for(j = 0;j<Gp->numEdges;j++){
if(i == j) Gp->arc[i][j]=0;//没有自环
else Gp->arc[i][j] = INFINITY;//初始化
}
}
for(k = 0;k < Gp->numEdges;k++){
cout<<"请输入边(vi, vj)的上标i,下标j和权值w(空格分隔):" << endl;
cin>> i >> j >> w;
Gp->arc[i][j] = w;
Gp->arc[j][i] = w; /* 因为是无向图,矩阵对称 */
}
}//虽然根据对称矩阵说可以压缩一半空间,数量级未改变,且牺牲时间
int main(){
MGraph MG;
CreateMGraph(&MG);
return 0;
}