/*
* @title:拓扑排序
* @input: 一个有向无环图,表述为一个邻接矩阵graph[n][],其中graph[i][0]为顶点i的入度,其余为其后继结点
* @output: 一个拓扑序列list
*/
import java.util.*;
public class TopologicalSortTest
{
public static void main(String[] args)
{
int[][] graph={{0,1,2,3,},{2,},{1,1,4,},{2,4,},{3,},{0,3,4,},};
int[] list=new int[graph.length];;
TopologicalSort topologicalSort=new TopologicalSort();
topologicalSort.input(graph);
list=topologicalSort.getList();
for(int l : list){
System.out.print(l+" ");
}
}
}
class TopologicalSort
{
int[][] graph;
int[] list;
void input(int[][] graph)
{
this.graph=graph;
list=new int[graph.length];
calculate();
}
void calculate()
{
Stack stack=new Stack();
for(int i=0; i if(graph[i][0]==0){ stack.push(i); } } int i=0; while(stack.empty()!=true){ list[i]=(Integer)stack.pop(); for(int j=1; j int k=graph[list[i]][j]; if((--graph[k][0])==0){ stack.push(k); } } i++; } if(i System.out.println("存在环,不可排序!"); System.exit(0); } } int[] getList() { return list; } } 运行结果: 5 0 3 2 4 1
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。