template <class ElemType> void StatDegree(const AdjListDirGraph<ElemType> &g, int *Degree) // 操作结果:统计图g各顶点的度 { }
时间: 2024-04-30 16:19:55 浏览: 60
计算机考研/工作必会100题
这段代码实现了统计有向图中每个顶点的度数的功能。其中模板类`AdjListDirGraph`表示邻接表实现的有向图,`ElemType`表示顶点的数据类型。函数的参数`g`为传入的有向图对象,`*Degree`为指向存储度数结果的数组的指针。
具体实现可以按照以下步骤:
1. 获取有向图中所有的顶点,可以通过`g.GetVertex() `方法实现。该方法返回一个`vector`类型的顶点数组。
2. 对于每个顶点,遍历其所有的出边(即该顶点连向其他顶点的边),并统计出边的个数。可以通过邻接表中每个顶点对应的链表来实现。
3. 将每个顶点的出边数作为该顶点的出度,并将结果存储在`*Degree`数组中。
完整代码如下:
```c++
template <class ElemType>
void StatDegree(const AdjListDirGraph<ElemType> &g, int *Degree) {
vector<Vertex<ElemType>> vertexList = g.GetVertex();
for (int i = 0; i < vertexList.size(); i++) {
int outDegree = 0;
ArcNode *p = vertexList[i].firstArc;
while (p != NULL) {
outDegree++;
p = p->nextArc;
}
Degree[i] = outDegree;
}
}
```
阅读全文