图--邻接矩阵(数组表示法)

来源:互联网 发布: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");}}