无向图是对称的
所以 : 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

1837

被折叠的 条评论
为什么被折叠?



