用C语言编程计算图中结点的度数,并设计相应的图作为测试用例,进行功能测试。
时间: 2024-09-10 12:27:44 浏览: 94
在C语言中计算图中结点的度数,首先需要定义图的结构。通常我们使用邻接矩阵或邻接表来表示图。这里我将使用邻接矩阵作为例子来说明如何计算图中每个结点的度数。
首先定义图的结构:
```c
#define MAX_VERTICES 10 // 假设图中最多有10个顶点
// 图的结构定义
typedef struct {
int n; // 顶点数
int adjMatrix[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵
} Graph;
```
接下来,编写计算度数的函数:
```c
// 计算图中每个结点的度数
void calculateDegrees(Graph *g) {
int degrees[MAX_VERTICES] = {0}; // 存储每个结点的度数
for (int i = 0; i < g->n; i++) {
for (int j = 0; j < g->n; j++) {
if (g->adjMatrix[i][j] == 1) { // 如果存在边,则度数加1
degrees[i]++;
}
}
}
// 打印每个结点的度数
for (int i = 0; i < g->n; i++) {
printf("结点 %d 的度数为: %d\n", i, degrees[i]);
}
}
```
设计测试用例:
```c
int main() {
Graph g;
g.n = 5; // 假设图有5个结点
// 初始化邻接矩阵
for (int i = 0; i < g.n; i++) {
for (int j = 0; j < g.n; j++) {
g.adjMatrix[i][j] = 0;
}
}
// 添加边
// 例如,添加边 (0, 1), (0, 2), (1, 2), (1, 3), (2, 4)
g.adjMatrix[0][1] = g.adjMatrix[1][0] = 1;
g.adjMatrix[0][2] = g.adjMatrix[2][0] = 1;
g.adjMatrix[1][2] = g.adjMatrix[2][1] = 1;
g.adjMatrix[1][3] = g.adjMatrix[3][1] = 1;
g.adjMatrix[2][4] = g.adjMatrix[4][2] = 1;
// 计算并打印每个结点的度数
calculateDegrees(&g);
return 0;
}
```
上述测试用例构建了一个简单的无向图,并计算了每个结点的度数。
阅读全文