C语言实现邻接矩阵作为存储结构的无向图各顶点的度
时间: 2024-01-02 13:03:06 浏览: 102
好的,我可以帮你回答这个问题。
假设你已经定义了邻接矩阵的数据结构,可以按照以下步骤计算无向图各顶点的度数:
1. 定义一个数组degree,用于存储每个顶点的度数。
2. 遍历邻接矩阵的每一行,对于每一行i,计算该行中1的个数,即为顶点i的度数。
3. 将每个顶点的度数存储到degree数组中,即degree[i] = 顶点i的度数。
4. 遍历degree数组,输出每个顶点的度数即可。
以下是C语言代码示例:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 100
typedef struct {
int vertex[MAX_VERTEX_NUM]; // 存储顶点的数组
int edge[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存储邻接矩阵的二维数组
int vertex_num; // 顶点数
int edge_num; // 边数
} Graph;
void calc_degree(Graph* graph, int* degree) {
for (int i = 0; i < graph->vertex_num; i++) {
int count = 0;
for (int j = 0; j < graph->vertex_num; j++) {
if (graph->edge[i][j] == 1) {
count++;
}
}
degree[i] = count;
}
}
int main() {
Graph graph = {
{0, 1, 2, 3, 4}, // 顶点数组
{ // 邻接矩阵
{0, 1, 1, 0, 0},
{1, 0, 1, 1, 0},
{1, 1, 0, 0, 1},
{0, 1, 0, 0, 1},
{0, 0, 1, 1, 0}
},
5, // 顶点数
7 // 边数
};
int degree[MAX_VERTEX_NUM];
calc_degree(&graph, degree);
printf("各顶点的度数为:\n");
for (int i = 0; i < graph.vertex_num; i++) {
printf("顶点%d的度数为:%d\n", graph.vertex[i], degree[i]);
}
return 0;
}
```
输出结果为:
```
各顶点的度数为:
顶点0的度数为:2
顶点1的度数为:3
顶点2的度数为:3
顶点3的度数为:2
顶点4的度数为:2
```
阅读全文