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 perform the Topological Sort on the graph. 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 TopologicalSort { private Stack<Integer> stack; public TopologicalSort() { stack = new Stack<Integer>(); } public int [] topological(int adjacency_matrix[][], int source) throws NullPointerException { int number_of_nodes = adjacency_matrix.length - 1; int[] topological_sort = new int [number_of_nodes + 1]; int pos = 1; int j ; 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("TOPOLOGICAL SORT NOT POSSIBLE"); return null; } } 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; } return topological_sort; } public static void main(String...arg) { int number_no_nodes, source; Scanner scanner = null; int topological_sort[] = 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(); System.out.println("The Topological sort for the graph is given by "); TopologicalSort toposort = new TopologicalSort(); topological_sort = toposort.topological(adjacency_matrix, source); System.out.println(); for (int i = topological_sort.length - 1; i > 0; i-- ) { if (topological_sort[i] != 0) System.out.print(topological_sort[i]+"\t"); } }catch(InputMismatchException inputMismatch) { System.out.println("Wrong Input format"); }catch(NullPointerException nullPointer) { } scanner.close(); } }
$javac TopologicalSort.java $java TopologicalSort Enter the number of nodes in the graph 4 Enter the adjacency matrix 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 Enter the source for the graph 1 The Topological sort for the graph is given by 1 2 4 3
Related posts:
StringBuilder vs StringBuffer in Java
Java Program to Implement Word Wrap Problem
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Hướng dẫn Java Design Pattern – Bridge
Removing all duplicates from a List in Java
Overflow and Underflow in Java
Java Program to Represent Linear Equations in Matrix Form
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
Spring REST API + OAuth2 + Angular
Class Loaders in Java
Spring Boot - Google Cloud Platform
Spring Boot - Rest Controller Unit Test
Java Program to Decode a Message Encoded Using Playfair Cipher
Java Program to Implement Sorted Circular Doubly Linked List
Abstract class và Interface trong Java
Hướng dẫn Java Design Pattern – Command
Hướng dẫn Java Design Pattern – Dependency Injection
Java Program to Solve Tower of Hanoi Problem using Stacks
HashSet trong Java hoạt động như thế nào?
Java Collections Interview Questions
Spring Boot - Actuator
Java Program to Implement Uniform-Cost Search
Calling Stored Procedures from Spring Data JPA Repositories
Java Program to Find a Good Feedback Edge Set in a Graph
More Jackson Annotations
Comparing Long Values in Java
Guide to Mustache with Spring Boot
Jackson – Unmarshall to Collection/Array
Check if there is mail waiting
Java Program to Find Nearest Neighbor Using Linear Search
What is Thread-Safety and How to Achieve it?
Assert an Exception is Thrown in JUnit 4 and 5