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:
Arrays.asList vs new ArrayList(Arrays.asList())
Tính đóng gói (Encapsulation) trong java
Java Program to Find Basis and Dimension of a Matrix
Java 8 – Powerful Comparison with Lambdas
Converting Iterator to List
Java Program to Implement Randomized Binary Search Tree
Java Program to Implement Jarvis Algorithm
Form Validation with AngularJS and Spring MVC
Chuyển đổi Array sang ArrayList và ngược lại
Custom HTTP Header with the HttpClient
Java Program to Perform Searching Using Self-Organizing Lists
Injecting Prototype Beans into a Singleton Instance in Spring
Introduction to Using Thymeleaf in Spring
Finding a negative cycle in the graph
Java toString() Method
Easy Ways to Write a Java InputStream to an OutputStream
Java Program to Implement K Way Merge Algorithm
Java Program to Construct an Expression Tree for an Postfix Expression
Jackson Ignore Properties on Marshalling
Hướng dẫn Java Design Pattern – Observer
Receive email using POP3
Graph Data Stucture
Set Interface trong Java
Getting Started with Custom Deserialization in Jackson
Java – String to Reader
Error Handling for REST with Spring
Java Program to Implement ConcurrentSkipListMap API
Spring Boot - Rest Controller Unit Test
Daemon Threads in Java
Spring Boot - Twilio
Introduction to Spliterator in Java
Registration – Password Strength and Rules