用c语言编写函数求邻接矩阵存储结构的有向图G 中各顶点的入度
时间: 2024-11-13 17:28:15 浏览: 38
输出每个顶点的出度和入度
在C语言中,要计算邻接矩阵存储的有向图G中各顶点的入度,你可以创建一个函数,接收邻接矩阵作为输入,并遍历矩阵来累加每个顶点的入度。以下是简单的步骤:
```c
#include <stdio.h>
// 定义邻接矩阵的行数和列数
#define ROWS 5 // 更改为你实际的顶点数量
#define COLS 5 // 更改为你的边的数量
// 结构体表示邻接矩阵中的一个元素,包含顶点索引和计数器(入度)
typedef struct {
int vertex;
int degree; // 入度
} VertexDegree;
// 函数计算并返回所有顶点的入度
void calculate_in_degrees(int adjacency_matrix[ROWS][COLS]) {
VertexDegree vertices[ROWS]; // 存储顶点及其入度
for (int i = 0; i < ROWS; i++) {
vertices[i].vertex = i;
vertices[i].degree = 0;
}
// 遍历矩阵,累加每个顶点的入度
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (adjacency_matrix[i][j] > 0) { // 如果矩阵中(i, j)位置非零,则代表从i到j有边
vertices[j].degree++; // 计算目的顶点的入度
}
}
}
// 输出结果
for (int i = 0; i < ROWS; i++) {
printf("顶点 %d 的入度是 %d\n", vertices[i].vertex, vertices[i].degree);
}
}
// 示例用法
int main() {
int adjacency_matrix[ROWS][COLS] = {
{0, 1, 0, 0, 0},
{0, 0, 2, 0, 0},
{0, 0, 0, 0, 3},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}; // 根据你的图填充矩阵
calculate_in_degrees(adjacency_matrix);
return 0;
}
```
阅读全文