import java.util.*;
public class Topology
{
static final int MAX = 20; //最大点数
static int[][] g; //图
static LinkedList<Integer> queue; //保存排序结果
static int[] ingoing; //记录节点入度
static int[] outgoing;//记录节点出度
static int[] used;
static int ver;
static int edge;
static void tplgOrd(){
//从所有出度为0的点开始遍历
for(int i=1;i<=ver;i++){
if(outgoing[i] == 0)
helper(i);
}
}
static void helper(int index){
//入度为0,说明没有先驱节点了
if(ingoing[index]==0) {
if(used[index]==0){used[index] = 1;queue.addLast(index);}
return;
}
//有边指向当前节点说明还有前驱节点,处理前驱节点
for(int i = 1;i <= ver;i++){
if(g[i][index] < Integer.MAX_VALUE) //有边相连
helper(i);
}
//到这里一定是所有的前驱节点都处理过了,所以只要把当前节点加入队列即可。
if(used[index] == 0){
used[index] = 1;
queue.addLast(index);
}
}
static void init(){
g = new int[ver+5][ver+5];
queue =
深度优先实现拓扑排序--java
最新推荐文章于 2024-08-23 03:48:21 发布
该博客介绍了如何使用Java实现深度优先搜索进行拓扑排序。通过创建一个图,初始化节点和边,然后从入度为0的节点开始遍历,处理前驱节点并将其加入队列,最终输出拓扑排序的结果。示例代码展示了完整的拓扑排序过程。
摘要由CSDN通过智能技术生成