-
对于边较于顶点数较多的图,使用邻接矩阵较于使用邻接表更能充分利用存储空间。
-
邻接矩阵是由两部分组成,第一部分是顶点部分,由于顶点不分先后,主次,采用一维数组存储顶点表。第二部分是存储边表,边或弧存储的是边与边的关系,对于有向图而言,需要记录结点A指向B,亦或结点B指向A,那么考虑采用二维数组进行存储结点与结点之间的边表。
#define MaxSize 5
#define INF 10000
typedef struct{
int n;
char data;
}Vertype;
typedef struct{
int edges[MaxSize][MaxSize]; // 边表
Vertype VerNode[MaxSize]; // 顶点表
int n;
int e;
}MGraph;
void InitMGraph(MGraph* G){
cout<<"input vertexs and edges: "<<endl;
cin>>G->n>>G->e;
cout<<"input nodedate: "<<endl;
for (int i = 0; i<G->n; i++) {
cin>>G->VerNode[i].data;
}
for (int i = 0; i< G->n; i++) {
for (int j = 0; j< G->n; j++) {
G->edges[i][j] = INF;
}
}
for (int k = 0; k< G->e; k++) {
cout<<"input i,j and w: "<<endl;
int i,j,w;
cin>>i>>j>>w;
G->edges[i][j] = w;
G->edges[j][i] = w;
}
}