java拓扑排序 邻接表式和邻接矩阵式 两种代码都写在下面了
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
public class 拓扑排序 {
//邻接表式:
private static class Node{
Object value;
int inNum=0;
public Node(Object val) {
value=val;
}
}
private static class Graph{
HashSet<Node> vexSet=new HashSet<Node>();
HashMap<Node, HashSet<Node>> adjMap=new HashMap<Node, HashSet<Node>>();
public void addNode(Node start,Node end) {
if(!vexSet.contains(start)) vexSet.add(start);
if(!vexSet.contains(end)) vexSet.add(end);
if(adjMap.containsKey(start)) {
if(adjMap.get(start).contains(end)) {
return;
}else {
adjMap.get(start).add(end);
}
}else {
HashSet<Node> adjSet=new HashSet<Node>();
adjSet.add(end);
adjMap.put(start, adjSet);
}
end.inNum++;//入度加一
}
}
public static void topologySort_adjTa