拓扑排序的java实现

来源:java认证发布时间:2012-11-12 13:12:37java认证视频

  /*

  * @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

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答