邻接矩阵表示法构造无向图
时间: 2025-01-04 11:33:41 浏览: 7
### 使用邻接矩阵表示法构造无向图
#### 构造方法概述
为了使用邻接矩阵表示法构建无向图,需准备一个二维数组作为邻接矩阵。对于含有 \( n \) 个顶点的无向图而言,邻接矩阵 \( A \) 是一个 \( n \times n \) 的方阵。当顶点 \( i \) 和顶点 \( j \) 存在连接时,\( A[i][j]=1 \),反之则为 \( 0 \)[^4]。
值得注意的是,因为无向图中的边是没有方向性的,所以从任一点到另一点的存在意味着反向也存在同样的路径,这使得邻接矩阵呈现对称特性,即满足条件 \( A[i][j]=A[j][i] \)。
#### C语言实现案例
下面给出一段C语言代码片段展示如何通过输入创建并打印出一个简单的无向图对应的邻接矩阵:
```c
#include <stdio.h>
#define MAX_VERTICES 100 // 定义最大可能的顶点数量
int main() {
int adjMatrix[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵初始化
int vertices, edges;
printf("请输入顶点数:");
scanf("%d", &vertices);
printf("请输入边的数量:\n");
scanf("%d", &edges);
for (int i = 0; i < vertices; ++i){
for(int j=0;j<vertices;++j){
adjMatrix[i][j]=0;// 初始化邻接矩阵全零
}
}
for (int k = 0; k < edges; ++k) { // 输入每条边的信息
int startVertex,endVertex;
printf("第%d条边起点终点:",k+1);
scanf("%d %d",&startVertex,&endVertex);
adjMatrix[startVertex-1][endVertex-1] = 1;
adjMatrix[endVertex-1][startVertex-1] = 1; // 维持矩阵对称性
}
// 打印邻接矩阵
printf("\n邻接矩阵如下所示:\n");
for (int row = 0; row < vertices; ++row) {
for (int col = 0; col < vertices; ++col)
printf("%d ", adjMatrix[row][col]);
printf("\n");
}
}
```
这段代码首先让用户指定要建立的无向图有多少个顶点以及多少条边,接着按照用户的指示填充代表这些边存在的位置于邻接矩阵之中,并最终输出整个邻接矩阵的内容[^2]。
阅读全文