在Cfree软件上用C语言实现以下功能,求采用邻接矩阵作为存储结构的无向图各顶点的入度 9-16 编写函数,求邻接矩阵存储结构的有向图 G 中各顶点的入度。
时间: 2025-02-15 09:15:45 浏览: 38
在CFree软件上,如果你想要编写一个C语言程序来计算采用邻接矩阵表示的无向图中各顶点的入度,首先你需要了解几个关键步骤:
1. 定义邻接矩阵:这是一个二维数组,其中`matrix[i][j]`表示从顶点i到顶点j是否有边。如果是无向图,那么邻接矩阵是对称的。
```c
int adjMatrix[N][N]; // N是顶点的数量
```
2. 创建函数 `get_vertex_in_degrees(int *degrees, int n)`:
- 这个函数接收两个参数:一个整数指针`degrees`用于存储每个顶点的入度,另一个是顶点总数`n`。
- 遍历矩阵,对于每行(代表起点),将对应列(终点)的值累加到相应的`degrees`数组元素上,因为邻接矩阵是对称的,所以只需考虑非对角线部分。
```c
void get_vertex_in_degrees(int *degrees, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i != j && adjMatrix[i][j] > 0) { // 非对角线且有边
degrees[i]++;
}
}
}
}
```
3. 调用函数并更新入度:
- 在主程序中,先分配内存给`degrees`数组,然后调用上述函数,并在之后打印出每个顶点的入度。
```c
int main() {
int degrees[N];
get_vertex_in_degrees(degrees, n);
// 打印入度
for (int i = 0; i < n; i++) {
printf("顶点 %d 的入度为 %d\n", i, degrees[i]);
}
return 0;
}
```
阅读全文
相关推荐


















