用Java语言编程计算图中结点的度数
时间: 2024-09-12 20:02:43 浏览: 32
2021-2022计算机二级等级考试试题及答案No.9105.docx
在图论中,结点的度数指的是与该结点相连的边的数量。在无向图中,结点的度数等于与该结点相连的边的总数。在Java中,计算无向图中结点的度数可以通过遍历图的邻接表或邻接矩阵来实现。以下是通过邻接表计算结点度数的一个简单示例:
```java
import java.util.HashMap;
import java.util.Map;
public class Graph {
// 使用HashMap来表示邻接表,其中键是图中的结点,值是与该结点相连的结点列表
private Map<Integer, List<Integer>> adjList;
// 构造函数
public Graph() {
adjList = new HashMap<>();
}
// 添加边
public void addEdge(int u, int v) {
adjList.computeIfAbsent(u, k -> new ArrayList<>()).add(v);
adjList.computeIfAbsent(v, k -> new ArrayList<>()).add(u); // 无向图中,边是双向的
}
// 计算结点的度数
public int degreeOfNode(int node) {
if (adjList.containsKey(node)) {
return adjList.get(node).size();
}
return 0; // 如果结点不存在,则返回0
}
public static void main(String[] args) {
Graph g = new Graph();
// 假设添加了一些边来构建图
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 3);
// 计算并打印每个结点的度数
for (Map.Entry<Integer, List<Integer>> entry : g.adjList.entrySet()) {
int node = entry.getKey();
int degree = g.degreeOfNode(node);
System.out.println("结点 " + node + " 的度数是: " + degree);
}
}
}
```
在这个例子中,我们定义了一个`Graph`类,使用`HashMap`来存储图的邻接表,每个键值对应一个结点和与之相连的结点列表。`addEdge`方法用于添加边,而`degreeOfNode`方法用于计算特定结点的度数。在`main`方法中,我们创建了一个图的实例,并添加了一些边,然后计算并打印出每个结点的度数。
阅读全文