用c语言代码算求有向图每个顶点的入度和出度
时间: 2024-03-13 09:48:22 浏览: 66
以下是用C语言计算有向图每个顶点的入度和出度的代码示例:
```c
#include <stdio.h>
#define MAX_VERTICES 100 // 最大顶点数
// 有向图的邻接矩阵表示法
typedef struct {
int n; // 顶点数
int adj[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵
} Graph;
// 计算有向图每个顶点的入度和出度
void calc_degrees(Graph* g, int* in_degrees, int* out_degrees) {
int i, j;
for (i = 0; i < g->n; i++) {
in_degrees[i] = 0; // 初始化入度为0
out_degrees[i] = 0; // 初始化出度为0
for (j = 0; j < g->n; j++) {
if (g->adj[i][j] != 0) {
out_degrees[i]++; // 计算出度
in_degrees[j]++; // 计算入度
}
}
}
}
int main() {
Graph g = {5, {{0, 1, 0, 0, 1},
{0, 0, 1, 0, 0},
{0, 0, 0, 1, 1},
{0, 0, 0, 0, 1},
{0, 0, 0, 0, 0}}}; // 有向图的邻接矩阵表示法
int in_degrees[MAX_VERTICES], out_degrees[MAX_VERTICES]; // 存储每个顶点的入度和出度
int i;
calc_degrees(&g, in_degrees, out_degrees); // 计算每个顶点的入度和出度
printf("顶点\t入度\t出度\n");
for (i = 0; i < g.n; i++) {
printf("%d\t%d\t%d\n", i, in_degrees[i], out_degrees[i]);
}
return 0;
}
```
以上代码中,我们先定义了一个 `Graph` 结构体来表示有向图的邻接矩阵表示法。然后,我们通过 `calc_degrees` 函数计算每个顶点的入度和出度。最后,我们输出每个顶点的入度和出度。
阅读全文