无向图是对称的
所以 : G->matrix[i][j] = 1;
G->matrix[j][i] = 1;
AB线段为1的同时 BA的线段也为1
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#define MAXVEX 100//最大顶点数
typedef struct
{int vexs[MAXVEX];//存储顶点的数组int matrix[MAXVEX][MAXVEX];//存储邻接矩阵的二维数组int vexnum, edgenum;//顶点数+边数
}MGraph;
//创建有向图的邻接矩阵
void CreateMGraph(MGraph* G)
{int i, j, k, w;printf("请输入顶点数和边数\n");scanf("%d%d", &G->vexnum, &G->edgenum);printf("请输入顶点信息\n");//数组顶点信息(结点)for (i = 0; i < G->vexnum; i++){scanf("%d", &G->vexs[i]);}//初始化邻接矩阵的二维数组for (i = 0; i < G->vexnum; i++){for (j = 0; j < G->vexnum; j++){G->matrix[i][j] = 0;}}printf("请输入边的信息\n");for (k = 0; k < G->edgenum; k++){printf("请输入边(vi,vj)的下标i,下标j\n");scanf("%d%d", &i, &j);G->matrix[i][j] = 1;G->matrix[j][i] = 1;}
}
//打印
void printMGraph(MGraph G)
{int i, j;printf("邻接矩阵为\n");for (i = 0; i < G.vexnum; i++){for (j = 0; j < G.vexnum; j++){printf("%d ", G.matrix[i][j]);}printf("\n");}
}
int main()
{MGraph G;CreateMGraph(&G);printMGraph(G);return 0;
}
代码输入部分:
请输入顶点数和边数
5 12
请输入顶点信息
1 2 3 4 5
请输入边的信息
请输入边(vi,vj)的下标i,下标j
0 1
请输入边(vi,vj)的下标i,下标j
0 3
请输入边(vi,vj)的下标i,下标j
1 0
请输入边(vi,vj)的下标i,下标j
1 2
请输入边(vi,vj)的下标i,下标j
1 4
请输入边(vi,vj)的下标i,下标j
2 1
请输入边(vi,vj)的下标i,下标j
2 3
请输入边(vi,vj)的下标i,下标j
2 4
请输入边(vi,vj)的下标i,下标j
3 0
请输入边(vi,vj)的下标i,下标j
3 2
请输入边(vi,vj)的下标i,下标j
4 1
请输入边(vi,vj)的下标i,下标j
4 2
邻接矩阵为
0 1 0 1 0
1 0 1 0 1
0 1 0 1 1
1 0 1 0 0
0 1 1 0 0