## Representation of a graph in memory

A graph can be represented mainly in three different ways: adjacency matrix, adjacency list, and incidence matrix.

### Adjacency matrix

An adjacency matrix is a matrix, a table of values, where each value represents an edge and both the rows are the columns that represent the vertices. The values in a matrix can be the members of the entry. The values of the edges can be stored in the matrix itself. There could also be a special value for representing the absence of an edge. The following image shows an adjacency matrix for the graph in *Figure 1*, where the value of the edge represents the number of edges between the corresponding vertices:

The following things can be noted about an adjacency matrix:

Rows are used to represent the sources and columns to represent the targets of the edges

In the case of an undirected graph, the source and target are indistinguishable, so the adjacency matrix is symmetric

The following code provides an implementation of the graph ADT...