数据结构c++统计有向图各顶点的度
时间: 2023-08-30 21:02:43 浏览: 93
在计算机科学中,数据结构是用来存储和组织数据的方式。其中一个常见的数据结构是有向图,它由一组顶点和一组有向边组成。对于有向图中的每个顶点,它有两种度量方式,即入度和出度。
入度表示有多少条边指向该顶点,出度表示有多少条边从该顶点出发。统计有向图各顶点的度的过程可以通过遍历图中的各个顶点来实现。具体步骤如下:
1. 创建一个数组或哈希表,用于存储每个顶点的度。
2. 遍历有向图中的每个顶点。
3. 对于每个顶点,遍历其相邻的边(即指向该顶点的边和从该顶点出发的边),并分别计算其入度和出度。
4. 将计算得到的入度和出度分别添加到该顶点对应的数组或哈希表中。
5. 继续遍历下一个顶点,直到遍历完所有顶点。
6. 最后,输出每个顶点的入度和出度。
数据结构C语言实现统计有向图各顶点的度的代码如下所示:
```c
#include <stdio.h>
#define MAX_VERTICES 100
// 用数组存储有向图的顶点度
int inDegree[MAX_VERTICES];
int outDegree[MAX_VERTICES];
void calculateDegrees(int graph[MAX_VERTICES][MAX_VERTICES], int numVertices) {
for(int i = 0; i < numVertices; i++) {
inDegree[i] = 0;
outDegree[i] = 0;
for(int j = 0; j < numVertices; j++) {
if(graph[i][j] == 1) {
outDegree[i]++;
inDegree[j]++;
}
}
}
}
int main() {
int graph[MAX_VERTICES][MAX_VERTICES] = {
{0, 1, 0},
{0, 0, 1},
{1, 0, 0}
};
int numVertices = 3;
calculateDegrees(graph, numVertices);
for(int i = 0; i < numVertices; i++) {
printf("Vertex %d - In Degree: %d, Out Degree: %d\n", i, inDegree[i], outDegree[i]);
}
return 0;
}
```
以上代码的示例有向图是一个3x3的邻接矩阵。运行代码后,会依次输出每个顶点的入度和出度。
阅读全文