This Java program,to perform the topological Sort on a given graph by the DFS method.The topological sort is performed on a directed acyclic graph.
Here is the source code of the Java program to check for cycle in topological sort. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
import java.util.InputMismatchException; import java.util.Scanner; import java.util.Stack; public class TopoCycle { private Stack<Integer> stack; public TopoCycle() { stack = new Stack<Integer>(); } public boolean checkCycle(int adjacency_matrix[][], int source) { int number_of_nodes = adjacency_matrix.length - 1; int[] topological_sort = new int [number_of_nodes + 1]; int pos = 1; int j; boolean cycle = false; int visited[] = new int[number_of_nodes + 1]; int element = source; int i = source; visited = 1; stack.push(source); while (!stack.isEmpty()) { element = stack.peek(); while (i <= number_of_nodes) { if (adjacency_matrix[element][i] == 1 && visited[i] == 1) { if (stack.contains(i)) { System.out.println("The Graph Contains a cycle"); cycle = true; return cycle; } } if (adjacency_matrix[element][i] == 1 && visited[i] == 0) { stack.push(i); visited[i] = 1; element = i; i = 1; continue; } i++; } j = stack.pop(); topological_sort[pos++] = j; i = ++j; } System.out.println("The Graph does not Contain cycle"); return cycle; } public static void main(String...arg) { int number_no_nodes, source; Scanner scanner = null; try { System.out.println("Enter the number of nodes in the graph"); scanner = new Scanner(System.in); number_no_nodes = scanner.nextInt(); int adjacency_matrix[][] = new int[number_no_nodes + 1][number_no_nodes + 1]; System.out.println("Enter the adjacency matrix"); for (int i = 1; i <= number_no_nodes; i++) for (int j = 1; j <= number_no_nodes; j++) adjacency_matrix[i][j] = scanner.nextInt(); System.out.println("Enter the source for the graph"); source = scanner.nextInt(); TopoCycle topoCycle = new TopoCycle(); topoCycle.checkCycle(adjacency_matrix, source); }catch(InputMismatchException inputMismatch) { System.out.println("Wrong Input format"); } scanner.close(); } }
$javac TopoCycle.java $java TopoCycle Enter the number of nodes in the graph 5 Enter the adjacency matrix 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 Enter the source for the graph 1 The Graph contains a cycle
Related posts:
Read an Outlook MSG file
Java Program to Implement Selection Sort
A Quick Guide to Spring Cloud Consul
Java – Generate Random String
Java Program to Implement Self organizing List
Generic Constructors in Java
Java Program to Find Nearest Neighbor Using Linear Search
ArrayList trong java
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Consuming RESTful Web Services
Java – InputStream to Reader
The StackOverflowError in Java
Handle EML file with JavaMail
Join and Split Arrays and Collections in Java
Login For a Spring Web App – Error Handling and Localization
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
A Guide to LinkedHashMap in Java
Java Program to Implement Cartesian Tree
Java Program to Implement wheel Sieve to Generate Prime Numbers Between Given Range
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
Java 14 Record Keyword
Hướng dẫn Java Design Pattern – Strategy
Java Program to Implement Horner Algorithm
Java Program to Implement Disjoint Sets
Java Program to Find the Nearest Neighbor Using K-D Tree Search
Map Interface trong java
Exploring the New Spring Cloud Gateway
Guide to UUID in Java
Java Program to Represent Graph Using 2D Arrays
Allow user:password in URL
Converting a List to String in Java
Java Program to Perform Stooge Sort