图的存储结构为邻接矩阵,用Java写一个统计图中结点的出度和入度
时间: 2023-03-04 10:36:06 浏览: 102
假设图的存储结构为邻接矩阵,其中邻接矩阵的大小为`n`x`n`,表示有`n`个节点。则可以通过遍历邻接矩阵的每一行和每一列来统计每个节点的出度和入度。
具体的Java代码实现如下:
```java
public class Graph {
private int[][] adjacencyMatrix;
private int numNodes;
public Graph(int[][] adjacencyMatrix) {
this.adjacencyMatrix = adjacencyMatrix;
this.numNodes = adjacencyMatrix.length;
}
public int getOutDegree(int node) {
int outDegree = 0;
for (int i = 0; i < numNodes; i++) {
if (adjacencyMatrix[node][i] == 1) {
outDegree++;
}
}
return outDegree;
}
public int getInDegree(int node) {
int inDegree = 0;
for (int i = 0; i < numNodes; i++) {
if (adjacencyMatrix[i][node] == 1) {
inDegree++;
}
}
return inDegree;
}
}
```
其中,`Graph`类包含了邻接矩阵和节点数量`numNodes`两个属性,并提供了`getOutDegree`和`getInDegree`两个方法来分别计算某个节点的出度和入度。
在`getOutDegree`方法中,遍历邻接矩阵的第`node`行,每当发现值为1的元素,就表示该节点有一个出边,将`outDegree`累加即可。
在`getInDegree`方法中,遍历邻接矩阵的第`node`列,每当发现值为1的元素,就表示有一个节点有一条指向该节点的入边,将`inDegree`累加即可。