Java Program to Implement the graph data structure


In this article, we will understand how to implement the graph data structure. we implement the graph data structure we implement graphs in Java using HashMap collection. HashMap elements are in the form of key-value pairs. We can represent the graph adjacency list in a HashMap.

Below is a demonstration of the same −

Suppose our input is

Number of Vertices: 5
Number of edges: 5

The desired output would be

The connections between the nodes of the Graph are:
1 - 2
1 - 3
1 - 4
2 - 4
2 - 5
3 - 4
3 - 5
4 - 5

Algorithm

Step 1 - START
Step 2 - Declare an object of a Graph class namely graph_object, two integers in class ‘Edge’ namely source and destination, and two integers in ‘main’ function namely vertices_count, edges_count.
Step 3 - Define the values.
Step 4 - Initialize values for the vertices and count.
Step 5 - Create a new instance of the previously defined class.
Step 6 - Initialize the instance with relevant values.
Step 7 - Iterate over the instance using a ‘for’ loop, and display the output on the console.
Step 8 - Display the result
Step 9 - Stop

Example 1

Here, we bind all the operations together under the ‘main’ function.

public class Graph {
   class Edge {
      int source, destination;
   }
   int vertices, edges;
   Edge[] edge;
   Graph(int vertices, int edges) {
      this.vertices = vertices;
      this.edges = edges;
      edge = new Edge[edges];
      for(int i = 0; i < edges; i++) {
         edge[i] = new Edge();
      }
   }
   public static void main(String[] args) {
      int vertices_count = 5;
      int edges_count = 8;
      Graph graph_object = new Graph(vertices_count, edges_count);
      System.out.println("A graph object is defined.");
      graph_object.edge[0].source = 1;
      graph_object.edge[0].destination = 2;
      graph_object.edge[1].source = 1;
      graph_object.edge[1].destination = 3;
      graph_object.edge[2].source = 1;
      graph_object.edge[2].destination = 4;
      graph_object.edge[3].source = 2;
      graph_object.edge[3].destination = 4;
      graph_object.edge[4].source = 2;
      graph_object.edge[4].destination = 5;
      graph_object.edge[5].source = 3;
      graph_object.edge[5].destination = 4;
      graph_object.edge[6].source = 3;
      graph_object.edge[6].destination = 5;
      graph_object.edge[7].source = 4;
      graph_object.edge[7].destination = 5;
      System.out.println("The connections between the edges of the Graph are: ");
      for(int i = 0; i < edges_count; i++) {
         System.out.println(graph_object.edge[i].source + " - " + graph_object.edge[i].destination);
      }
   }
}

Output

A graph object is defined.
The connections between the edges of the Graph are:
1 - 2
1 - 3
1 - 4
2 - 4
2 - 5
3 - 4
3 - 5
4 - 5

Example 2

Here, we encapsulate the operations into functions exhibiting object-oriented programming.

public class Graph {
   class Edge {
      int source, destination;
   }
   int vertices, edges;
   Edge[] edge;
   Graph(int vertices, int edges) {
      this.vertices = vertices;
      this.edges = edges;
      edge = new Edge[edges];
      for(int i = 0; i < edges; i++) {
         edge[i] = new Edge();
      }
   }
   static void print(Graph graph_object,int edges_count){
      System.out.println("The connections between the edges of the Graph are: ");
      for(int i = 0; i < edges_count; i++) {
         System.out.println(graph_object.edge[i].source + " - " + graph_object.edge[i].destination);
      }
   }
   static void connect_edges(Graph graph_object){
      graph_object.edge[0].source = 1;
      graph_object.edge[0].destination = 2;
      graph_object.edge[1].source = 1;
      graph_object.edge[1].destination = 3;
      graph_object.edge[2].source = 1;
      graph_object.edge[2].destination = 4;
      graph_object.edge[3].source = 2;
      graph_object.edge[3].destination = 4;
      graph_object.edge[4].source = 2;
      graph_object.edge[4].destination = 5;
      graph_object.edge[5].source = 3;
      graph_object.edge[5].destination = 4;
      graph_object.edge[6].source = 3;
      graph_object.edge[6].destination = 5;
      graph_object.edge[7].source = 4;
      graph_object.edge[7].destination = 5;
   }
   public static void main(String[] args) {
      int vertices_count = 5;
      int edges_count = 8;
      Graph graph_object = new Graph(vertices_count, edges_count);
      System.out.println("A graph object is defined.");
      connect_edges(graph_object);
      print(graph_object, edges_count);
   }
}

Output

A graph object is defined.
The connections between the edges of the Graph are:
1 - 2
1 - 3
1 - 4
2 - 4
2 - 5
3 - 4
3 - 5
4 - 5

Updated on: 30-Mar-2022

822 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements