Search⌘ K
AI Features

AdjacencyLists: A Graph as a Collection of Lists

Explore the adjacency list representation of graphs and understand how to implement and manipulate them in C++. Learn the performance characteristics of addEdge, removeEdge, hasEdge, inEdges, and outEdges methods. Gain insights into design trade-offs and practical usage for graph-based algorithms.

Adjacency list representations of graphs take a more vertex-centric approach. There are many possible implementations of adjacency lists. In this section, we present a simple one. At the end of the section, we discuss different possibilities. In an adjacency list representation, the graph G=(V,E)G = (V,E) is represented as an array, adj, of lists. The adj[i] list contains a list of all the vertices adjacent to vertex i. That is, it contains every index jj such that (i,j) ∈E\in E.

Visual demonstration of the adjacency list

The visual demonstration of the adjacency list is shown below:

 A graph and its adjacency lists
A graph and its adjacency lists

The constructor for creating an AdjacencyLists is as follows:

C++
int n;
List < Integer > [] adj;
AdjacencyLists(int n0) {
n = n0;
adj = (List < Integer > []) new List[n];
for (int i = 0; i < n; i++)
adj[i] = new ArrayStack < Integer > ();
}

In this particular implementation, we represent each list in adj as an ArrayStack, because we would like ...