C++ Program to Represent Graph Using Adjacency List



What is Adjacency List?

An adjacency list is a collection of unordered lists that are used to represent a finite graph. Each list in the collection represents one of the vertex of the graph and it will store the adjacent vertices of that vertex. Let's see an example:

Graph

The image below represent a simple undirected graph with 6 vertices and 8 edges.

Graph

Adjacency List

The adjacency list of the above graph is shown below.

Adjacency List

Algorithm

The following are the steps to create (represent) a graph using an adjacency list:

  • Step 1: Start
  • Step 2: Input the number of vertices V and number of edges E in the graph
  • Step 3: Create an array of lists (adjList[V]) to store adjacent vertices for each vertex
  • Step 4: For each edge, repeat the steps 5,6 and 7.
  • Step 5:Input the pair of vertices (u, v) that form an edge
  • Step 6:Add v to the adjacency list of u
  • Step 7:If the graph is undirected, also add u to the adjacency list of v
  • Step 8: Display the adjacency list for each vertex
  • Step 9: End

C++ Program to Create Adjacency List

The following C++ program demonstrates how to create an adjacency list for a graph. The program allows the user to input the number of vertices and edges, and then it displays the adjacency list.

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int V, E;
    bool isDirected;

    // Step 1 & 2: Input vertices and edges
    cout << "Enter number of vertices: ";
    cin >> V;
    cout << "Enter number of edges: ";
    cin >> E;
    cout << "Is the graph directed? (1 for Yes, 0 for No): ";
    cin >> isDirected;

    // Step 3: Create adjacency list
    vector<int> adjList[V];

    // Step 4: Input edges
    for (int i = 0; i < E; i++) {
        int u, v;
        cout << "Enter edge " << i + 1 << " (format: u v): ";
        cin >> u >> v;

        adjList[u].push_back(v);
        if (!isDirected) {
            adjList[v].push_back(u);
        }
    }

    // Step 5: Display adjacency list
    cout << "\nAdjacency List:\n";
    for (int i = 0; i < V; i++) {
        cout << i << " ? ";
        for (int neighbor : adjList[i]) {
            cout << neighbor << " ";
        }
        cout << endl;
    }

    // Step 6: End
    return 0;
}

Sample Output

The output of the above program is as follows:

Sample Output
Updated on: 2025-04-15T18:23:30+05:30

4K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements