用c语言创建一个无向图,选用任一数据存储结构,并求出任意一个项的度
时间: 2024-02-18 18:59:13 浏览: 70
好的,我可以为您提供一个示例代码,使用邻接矩阵来存储无向图,并求出任意一个顶点的度数。请参考下面的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTICES 50
// 定义邻接矩阵结构体
typedef struct {
int edges[MAX_VERTICES][MAX_VERTICES];
int num_vertices;
} Graph;
// 初始化图
void init_graph(Graph *g, int num_vertices) {
g->num_vertices = num_vertices;
for (int i = 0; i < num_vertices; i++) {
for (int j = 0; j < num_vertices; j++) {
g->edges[i][j] = 0;
}
}
}
// 添加边
void add_edge(Graph *g, int v1, int v2) {
g->edges[v1][v2] = 1;
g->edges[v2][v1] = 1;
}
// 求顶点的度数
int get_degree(Graph *g, int v) {
int degree = 0;
for (int i = 0; i < g->num_vertices; i++) {
if (g->edges[v][i] == 1) {
degree++;
}
}
return degree;
}
int main() {
Graph g;
init_graph(&g, 5);
add_edge(&g, 0, 1);
add_edge(&g, 0, 2);
add_edge(&g, 1, 2);
add_edge(&g, 1, 3);
add_edge(&g, 2, 4);
add_edge(&g, 3, 4);
int degree = get_degree(&g, 2);
printf("顶点2的度数为:%d\n", degree);
return 0;
}
```
上面的代码中,我们定义了一个邻接矩阵结构体,包含一个二维数组 `edges` 用来存储边的信息,以及一个表示顶点个数的变量 `num_vertices`。使用 `init_graph` 函数来初始化图,`add_edge` 函数用来添加边,`get_degree` 函数用来返回某个顶点的度数。在 `main` 函数中,我们创建了一个例子图,然后求出了顶点2的度数,输出结果为2。
阅读全文