参考博文 拓扑排序 public class Main { public static void main(String[] args){ System.out.println("请输入一个图的邻接矩阵(8X8):"); int[][] map = new int[8][8]; int[] inDegree = new int[8]; for(int i = 0; i < 8; i++){ inDegree[i] = 0; } java.util.Scanner scan = new java.util.Scanner(System.in); for(int i = 0; i < 8; i++){ for(int j = 0; j < 8; j++){ map[i][j] = scan.nextInt(); if(map[i][j] == 1){ inDegree[j]++; } } } String str = "abcdefgh";//使得字母和对应的下标数字对应 //拓扑排序 //每次干掉一个节点,最多干8次,8次干不完,说明有环 for(int i = 0; i < 8; i++){ //找一个入度是0的节点,干掉 for(int j = 0; j < 8; j++){ if(inDegree[j] == 0){ inDegree[j]--; System.out.print(str.charAt(j)+" "); //并删除以j为起点的边 for(int k = 0; k < 8; k++){ if(map[j][k] == 1){ inDegree[k]--; } } break; } } } System.out.println(); } }