import java.util.*;
public class TopologicalSort {
private int V; // 顶点数
private LinkedList
TopologicalSort(int v) {
V = v;
adj = new LinkedList[v];
for (int i=0; i
adj[i] = new LinkedList();
}
// 添加边
void addEdge(int v,int w) { adj[v].add(w); }
// 拓扑排序
boolean topologicalSort() {
int[] inDegree = new int[V];
// 计算所有顶点的入度
for (int i = 0; i < V; i++) {
for (int node : adj[i]) {
inDegree[node]++;
}
}
Queue
for (int i = 0; i < V; i++) {
if (inDegree[i] == 0)
queue.add(i);
}
int cnt = 0;
List
while (!queue.isEmpty()) {
int u = queue.poll();
topOrder.add(u);
for (int node : adj[u]) {
if (--inDegree[node] == 0)
queue.add(node);
}
cnt++;
}
// 如果计数不等于顶点数,说明有环
if (cnt != V) {
System.out.println("图中存在环");
return false;
} else {
System.out.println("拓扑排序结果:");
for (int i : topOrder) {
System.out.print(i + " ");
}
return true;
}
}
public static void main(String args[]) {
TopologicalSort g = new TopologicalSort(6);
g.addEdge(5, 2);
g.addEdge(5, 0);
g.addEdge(4, 0);
g.addEdge(4, 1);
g.addEdge(2, 3);
g.addEdge(3, 1);
g.topologicalSort();
}
}
这段代码实现了基于Kahn算法的拓扑排序,通过计算入度和队列处理来检测图中是否存在环。如果排序顶点数不等于总顶点数,则说明存在环。
http://zhishi.liyintong.com
http://zhishi.naqimai.cn
http://zhishi.kucedu.cn
http://zhishi.yueluyan.cn
http://zhishi.huayuke.cn
http://zhishi.haizichu.cn
http://zhishi.yawanmei.cn
http://zhishi.biaolele.cn
http://zhishi.shenhebu.cn
http://zhishi.zimeiren.cn
http://zhishi.qishouka.cn
http://zhishi.ruanding.cn
http://zhishi.xjhsdsc.cn
http://zhishi.itoren.cn
http://zhishi.iseebest.cn
http://zhishi.bndaye.cn
http://zhishi.rustler.cn
http://zhishi.excelta.cn
http://zhishi.diaolift.cn
http://zhishi.jxpfbyjs.cn
http://zhishi.banans.cn
http://zhishi.aspira.cn
http://zhishi.bxhqw.cn
http://zhishi.pudiweng.cn
http://zhishi.tingbu.cn
http://zhishi.ouhei.cn
http://zhishi.huiha.cn
http://zhishi.miuling.cn
http://zhishi.podang.cn
http://zhishi.fenkun.cn
http://zhishi.liangran.cn
http://zhishi.zouliu.cn
http://zhishi.xuhou.cn
http://zhishi.kuopao.cn
http://zhishi.lunkai.cn
http://zhishi.zhaiti.cn
http://zhishi.fogei.cn
http://zhishi.gengluo.cn
http://zhishi.wadiao.cn
http://zhishi.hunjun.cn
http://zhishi.huanken.cn
http://zhishi.chuancong.cn
http://zhishi.buzun.cn
http://zhishi.zhuozou.cn
http://zhishi.lazai.cn
http://zhishi.zengle.cn
http://zhishi.suidun.cn
http://zhishi.zhaojunji.cn
http://zhishi.huihuoban.cn
http://zhishi.wanjiahua.cn
http://zhishi.conglinyi.cn
http://zhishi.henyoupin.cn
http://zhishi.wuwenkang.cn
http://zhishi.tujiachen.cn
http://zhishi.zilaoweng.cn
http://zhishi.baolema.cn
http://zhishi.shumeilin.cn
http://zhishi.anhetong.cn
http://zhishi.wenjishu.cn
http://zhishi.kansande.cn
http://zhishi.yueshijie.cn
http://zhishi.tihujiu.cn
http://zhishi.huatoutou.cn
http://zhishi.xiaolaige.cn
http://zhishi.huguangu.cn
http://zhishi.lvdate.cn
http://zhishi.kesini.cn
http://zhishi.soubianlu.cn
http://zhishi.fuenbu.cn
http://zhishi.liuyakun.cn
http://zhishi.zouyizou.cn
http://zhishi.juyingba.cn
http://zhishi.namahu.cn
http://zhishi.dadudu.cn
http://zhishi.xuewenzi.cn
http://zhishi.lazhuyong.cn
http://zhishi.aizishu.cn
http://zhishi.nianjiepo.cn
http://zhishi.baisuijie.cn
http://zhishi.wanyuecun.cn
http://zhishi.shoupashu.cn
http://zhishi.hetongmei.cn
http://zhishi.ouenming.cn
http://zhishi.qianyiduo.cn
http://zhishi.yidingzhi.cn
http://zhishi.zouyuming.cn
http://zhishi.mofaya.cn
http://zhishi.hexiangru.cn
http://zhishi.quyouban.cn
http://zhishi.mingyinsi.cn
http://zhishi.junepan.cn
http://zhishi.qiyuehong.cn
http://zhishi.ledatong.cn
http://zhishi.chenqinga.cn
http://zhishi.ebuyun.cn
http://zhishi.gayijiu.cn
http://zhishi.liqinge.cn
http://zhishi.liubawan.cn
http://zhishi.huabaohan.cn
http://zhishi.aiguandan.cn
http://zhishi.judoubang.cn
http://zhishi.huachenyu.cn
http://zhishi.hexiaolia.cn
http://zhishi.feiyuxuan.cn
http://zhishi.zhenwasai.cn
http://zhishi.maoweilai.cn
http://zhishi.yunyuewei.cn
http://zhishi.kemensen.cn
http://zhishi.anxinyuan.cn
http://zhishi.deyisheji.cn
http://zhishi.ximaguohe.cn
http://zhishi.gewukeji.cn
http://zhishi.rehuang.cn