#define MaxVertexNum 100 /*最大顶点数设为100*/ |
typedef char VertexType; /*顶点类型设为字符型*/ |
typedef int EdgeType; /*边的权值设为整型*/ |
typedef struct |
{ |
VertexType vexs[MaxVertexNum]; /*顶点表*/ |
EdeType edges[MaxVertexNum][MaxVertexNum]; /*邻接矩阵,即边表*/ |
int n,e; /*顶点数和边数*/ |
} Mgragh; /*Maragh 是以邻接矩阵存储的图类型*/ |
建立一个图的邻接矩阵存储的算法如下: |
void CreateMGraph ( MGraph *G ) |
{ /*建立有向图G 的邻接矩阵存储*/ |
int i,j,k,w; |
char ch; |
printf ( "请输入顶点数和边数(输入格式为:顶点数,边数):\n" ); |
scanf ( "%d,%d" ,& ( G->n ),& ( G->e ) ); /*输入顶点数和边数*/ |
printf ( "请输入顶点信息(输入格式为:顶点号<CR>):\n" ); |
for ( i=0; i<G->n; i++ ) scanf ( "\n%c" ,& ( G->vexs[i] ) ); /*输入顶点信息,建立顶点表*/ |
for ( i=0; i<G->n; i++ ) |
for ( j=0; j<G->n; j++ ) G->edges[i][j]=0; /*初始化邻接矩阵*/ |
printf ( "请输入每条边对应的两个顶点的序号(输入格式为:i,j):\n" ); |
for ( k=0; k<G->e; k++ ) |
{ |
scanf ( "\n%d,%d" ,&i,&j ); /*输入e 条边,建立邻接矩阵*/ |
G->edges[i][j]=1; /*若加入G->edges[j][i]=1;,*/ |
/*则为无向图的邻接矩阵存储建立*/ |
} |
} /*CreateMGraph*/ |