写出图的领接矩阵存储方式的类型定义MGraph,要求尽可能通用。设有向图G采用MGraph存储,设计算法求G中入度为零的顶点个数
时间: 2024-11-22 09:48:41 浏览: 42
在创建一个通用的图数据结构MGraph时,可以考虑使用邻接矩阵作为底层存储,并添加一些必要的属性和方法。这里是一个简单的Java定义示例:
```java
public class MGraph<T> {
private int numVertices;
private boolean[][] adjacencyMatrix;
// 构造函数
public MGraph(int vertices) {
this.numVertices = vertices;
this.adjacencyMatrix = new boolean[vertices][vertices]; // 初始化为全False,适用于无向图
}
// 添加有向边
public void addDirectedEdge(int source, T destination) {
adjacencyMatrix[source][destination] = true;
}
// 获取某个顶点的入度
public int getInDegree(T vertex) {
int inDegree = 0;
for (int i = 0; i < numVertices; i++) {
if (adjacencyMatrix[vertex, i]) {
inDegree++;
}
}
return inDegree;
}
// 求所有入度为零的顶点个数
public int countZeroInDegreeVertices() {
int zeroInDegreeCount = 0;
for (T vertex : vertices()) {
if (getInDegree(vertex) == 0) {
zeroInDegreeCount++;
}
}
return zeroInDegreeCount;
}
// 其他辅助方法,如获取顶点集合等...
}
```
阅读全文