一、问题
0 -> 1 -> 2
↓ ↓ ↓
3 -> 4 -> 5
输出该图的一条拓扑排序,比如
0 -> 1 -> 3 -> 2 -> 4 -> 5
二、代码
Java
public class DirectedLinkedGraph {
private int vertexNum; // 顶点个数
private LinkedList<Integer> adj[]; // 邻接表
public DirectedLinkedGraph(int vertexNum) {
this.vertexNum = vertexNum;
adj = new LinkedList[vertexNum];
for (int i = 0; i < vertexNum; ++i) {
adj[i] = new LinkedList<>();
}
}
public void addEdge(int from, int to) { // 有向图一条边存两次
adj[from].add(to);
}
/**
* 创建
* <p>
* 0 -> 1 -> 2
* ↓ ↓ ↓
* 3 -> 4 -> 5
*/
public void build() {
addEdge(0, 1);
addEdge(0, 3);
addEd

本文探讨了有向图的拓扑排序问题,提供了详细的代码实现,包括使用Java编写的示例代码,展示了如何进行有向图的拓扑排序,最终输出如0 -> 1 -> 3 -> 2 -> 4 -> 5这样的排序序列。

1万+

被折叠的 条评论
为什么被折叠?



