邻接矩阵创建有向图并输出每个顶点的度C语言
时间: 2024-03-13 19:47:42 浏览: 78
好的,下面是邻接矩阵创建有向图并输出每个顶点的度的C语言代码:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 100 // 最大顶点数
typedef struct {
int vertex[MAX_VERTEX_NUM]; // 顶点数组
int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vertex_num; // 顶点数
int edge_num; // 边数
} Graph;
// 创建有向图的邻接矩阵
void createGraph(Graph *G) {
printf("请输入顶点数和边数:\n");
scanf("%d%d", &G->vertex_num, &G->edge_num);
printf("请输入顶点信息:\n");
for (int i = 0; i < G->vertex_num; i++) {
scanf("%d", &G->vertex[i]);
}
// 初始化邻接矩阵
for (int i = 0; i < G->vertex_num; i++) {
for (int j = 0; j < G->vertex_num; j++) {
G->arc[i][j] = 0;
}
}
printf("请依次输入边的两个顶点的序号:\n");
for (int k = 0; k < G->edge_num; k++) {
int i, j;
scanf("%d%d", &i, &j);
G->arc[i][j] = 1;
}
}
// 输出每个顶点的度
void printDegree(Graph G) {
printf("每个顶点的度为:\n");
for (int i = 0; i < G.vertex_num; i++) {
int in_degree = 0; // 入度
int out_degree = 0; // 出度
for (int j = 0; j < G.vertex_num; j++) {
if (G.arc[j][i] == 1) {
in_degree++;
}
if (G.arc[i][j] == 1) {
out_degree++;
}
}
printf("顶点 %d 的入度为 %d,出度为 %d\n", G.vertex[i], in_degree, out_degree);
}
}
int main() {
Graph G;
createGraph(&G);
printDegree(G);
return 0;
}
```
这段代码中,我们首先定义了一个结构体 `Graph`,用于存储有向图的信息,包括顶点数组、邻接矩阵、顶点数和边数。然后我们使用 `createGraph` 函数创建有向图的邻接矩阵,其中通过用户的输入来确定顶点数、边数和每个顶点的信息,并初始化邻接矩阵。最后,我们使用 `printDegree` 函数输出每个顶点的入度和出度,这里使用两个循环分别计算每个顶点的入度和出度,并输出结果。
阅读全文