c语言以邻接矩阵的形式创建一个无向图算法分析
时间: 2023-12-25 20:04:56 浏览: 90
邻接矩阵无向图
创建无向图的邻接矩阵需要先确定图的顶点数和边数。假设图的顶点数为n,边数为m,则无向图的邻接矩阵是一个n*n的方阵,其中每个元素a[i][j]表示顶点i和j之间是否有边相连。
算法步骤如下:
1. 定义一个n*n的二维数组adjMatrix,初始化所有元素为0。
2. 读入图中所有的边信息,对于每条边(u,v),将adjMatrix[u][v]和adjMatrix[v][u]都设为1。
3. 遍历邻接矩阵adjMatrix,可以输出图的邻接矩阵或者进行其他算法操作。
下面是一个C语言实现的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100
int adjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int n, m; // 顶点数和边数
void createGraph()
{
int i, u, v;
printf("请输入顶点数和边数:");
scanf("%d%d", &n, &m);
for (i = 1; i <= m; i++) {
printf("请输入第%d条边的两个顶点:", i);
scanf("%d%d", &u, &v);
adjMatrix[u][v] = 1;
adjMatrix[v][u] = 1; // 无向图需要将两个方向都赋值
}
}
void printGraph()
{
int i, j;
printf("图的邻接矩阵为:\n");
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
printf("%d ", adjMatrix[i][j]);
}
printf("\n");
}
}
int main()
{
createGraph(); // 创建无向图
printGraph(); // 输出邻接矩阵
return 0;
}
```
该代码读入图的顶点数和边数,然后读入每条边的两个顶点,将邻接矩阵对应元素设为1,最后输出邻接矩阵。
阅读全文