图--邻接矩阵(数组表示法)
来源:互联网 发布:smali 源码调试 编辑:程序博客网 时间:2024/04/20 13:21
/*图的邻接矩阵,算法7.2借助邻接矩阵很容易判定任意两个顶点之间是否有边(弧)相连,并容易求得各个顶点的度*/#include<stdio.h>#define MAXLEN 10typedef struct { char vexs[MAXLEN];//顶点向量,存储一串顶点标识 int edges[MAXLEN][MAXLEN];//表示两个顶点之间的关系 int n, e;} MGraph;//建立一个图的邻接矩阵存储的算法如下:void CreateMGraph(MGraph &G) { int i, j, k; char ch1, ch2; printf("请输入顶点数和边数:\n"); scanf("%d%d", &(G.n), &(G.e)); printf("请输入顶点标识(构造顶点向量):\n"); for(i = 0; i < G.n; i++) { getchar(); scanf("%c", &(G.vexs[i])); } /*格式化,任意两顶点之间的关系置为0(fause)*/ for(i = 0; i < G.n; i++) for(j = 0; j < G.n; j++) G.edges[i][j] = 0; printf("初始化每条边的首尾:\n"); for(k = 0; k < G.e; k++) { getchar(); printf("请输入第%d条边的首尾顶点序号:\n", k + 1); scanf("%c%c", &ch1, &ch2);//注意输入时不要加空格 for(i = 0; ch1 != G.vexs[i]; i++); for(j = 0; ch2 != G.vexs[j]; j++); G.edges[i][j]=G.edges[j][i] = 1; }}main(){MGraph M;CreateMGraph(M);int i, j;for(i=0; i<M.n; i++) {for(j=0; j<M.n; j++){printf("%d ", M.edges[i][j]);}printf("\n");}}