java 有向图的逆邻接表
时间: 2023-10-29 19:53:11 浏览: 201
在Java中,可以使用邻接表来表示有向图的逆邻接表。逆邻接表是指对于图中的每个顶点,记录其指向它的所有顶点的列表。
下面是一个示例实现:
```java
import java.util.ArrayList;
import java.util.List;
public class Graph {
private int V; // 顶点的数量
private List<List<Integer>> adjacencyList; // 邻接表
public Graph(int V) {
this.V = V;
adjacencyList = new ArrayList<>(V);
for (int i = 0; i < V; i++) {
adjacencyList.add(new ArrayList<>());
}
}
public void addEdge(int src, int dest) {
adjacencyList.get(src).add(dest);
}
public List<Integer> getInverseAdjacencyList(int vertex) {
List<Integer> inverseList = new ArrayList<>();
for (int i = 0; i < V; i++) {
if (adjacencyList.get(i).contains(vertex)) {
inverseList.add(i);
}
}
return inverseList;
}
public static void main(String[] args) {
Graph graph = new Graph(4);
graph.addEdge(0, 1);
graph.addEdge(0, 2);
graph.addEdge(1, 2);
graph.addEdge(2, 0);
graph.addEdge(2, 3);
graph.addEdge(3, 3);
int vertex = 2;
List<Integer> inverseList = graph.getInverseAdjacencyList(vertex);
System.out.println("Inverse adjacency list of vertex " + vertex + ":");
for (int v : inverseList) {
System.out.print(v + " ");
}
System.out.println();
}
}
```
在上述示例中,我们创建了一个有向图,并添加了一些边。然后,通过调用 `getInverseAdjacencyList` 方法,可以获取顶点的逆邻接表。最后,打印出顶点 2 的逆邻接表。
注意:这只是一个简单的示例,实际应用中可能需要更复杂的数据结构或算法来处理更大规模的图。
阅读全文