Bird
Raised Fist0
DSA Goprogramming~5 mins

Adjacency List vs Matrix When to Choose Which in DSA Go - Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is an adjacency list in graph representation?
An adjacency list stores each node and a list of its neighbors. It uses less space for sparse graphs and is efficient for iterating neighbors.
Click to reveal answer
beginner
What is an adjacency matrix in graph representation?
An adjacency matrix is a 2D array where each cell shows if an edge exists between two nodes. It uses more space but allows quick edge checks.
Click to reveal answer
intermediate
When is it better to use an adjacency list over a matrix?
Use adjacency list when the graph is sparse (few edges) because it saves memory and is faster to traverse neighbors.
Click to reveal answer
intermediate
When should you choose an adjacency matrix?
Choose adjacency matrix for dense graphs (many edges) or when you need to quickly check if an edge exists between two nodes.
Click to reveal answer
intermediate
What is a key trade-off between adjacency list and matrix?
Adjacency lists save space and are good for sparse graphs, but adjacency matrices allow faster edge lookups at the cost of more memory.
Click to reveal answer
Which graph representation uses less memory for sparse graphs?
AAdjacency Matrix
BBoth use the same memory
CAdjacency List
DDepends on the graph size
Which representation allows O(1) time to check if an edge exists between two nodes?
AAdjacency Matrix
BBoth
CAdjacency List
DNeither
For a graph with 1000 nodes and 10,000 edges, which is generally better?
AUse edge list instead
BAdjacency Matrix
CEither works equally
DAdjacency List
Which representation is simpler to implement for dense graphs?
AAdjacency Matrix
BAdjacency List
CBoth are equally simple
DNeither
If you need to quickly find all neighbors of a node, which is better?
AAdjacency Matrix
BAdjacency List
CBoth are equally fast
DDepends on the graph
Explain when to use adjacency list vs adjacency matrix for graph representation.
Think about graph density and operation speed.
You got /5 concepts.
    Describe the main trade-offs between adjacency list and adjacency matrix.
    Consider memory and time costs.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which data structure is generally better for representing a graph with very few edges compared to the number of nodes?
      easy
      A. Adjacency List
      B. Adjacency Matrix
      C. Edge List
      D. Incidence Matrix

      Solution

      1. Step 1: Understand graph density

        A graph with very few edges compared to nodes is called a sparse graph.
      2. Step 2: Choose data structure for sparse graphs

        Adjacency lists store only existing edges, saving space for sparse graphs.
      3. Final Answer:

        Adjacency List -> Option A
      4. Quick Check:

        Sparse graph = Adjacency List [OK]
      Hint: Sparse graph? Use adjacency list for space efficiency [OK]
      Common Mistakes:
      • Choosing adjacency matrix for sparse graphs wastes space
      • Confusing edge list with adjacency matrix
      • Assuming adjacency matrix is always better
      2. Which of the following is the correct way to declare an adjacency matrix for a graph with 4 nodes in Go?
      easy
      A. var graph [4][4]int
      B. graph := make([][]int, 4)
      C. var graph []int
      D. graph := map[int][]int{}

      Solution

      1. Step 1: Understand adjacency matrix declaration

        An adjacency matrix is a 2D fixed-size array representing edges between nodes.
      2. Step 2: Check Go syntax for fixed 2D array

        "var graph [4][4]int" declares a 4x4 integer matrix correctly.
      3. Final Answer:

        var graph [4][4]int -> Option A
      4. Quick Check:

        Fixed 2D array = var graph [4][4]int [OK]
      Hint: Adjacency matrix = fixed 2D array declaration [OK]
      Common Mistakes:
      • Using slice of slices without initialization for matrix
      • Declaring 1D slice instead of 2D array
      • Using map which is adjacency list style
      3. Given the following Go code using an adjacency list, what will be printed?
      graph := map[int][]int{
        0: {1, 2},
        1: {2},
        2: {0},
        3: {},
      }
      fmt.Println(graph[1])
      medium
      A. [0 2]
      B. [2]
      C. [1 2]
      D. []

      Solution

      1. Step 1: Identify adjacency list entries for node 1

        Node 1 has edges to node 2 only, so graph[1] = {2}.
      2. Step 2: Understand fmt.Println output

        Printing graph[1] outputs the slice [2].
      3. Final Answer:

        [2] -> Option B
      4. Quick Check:

        graph[1] = [2] [OK]
      Hint: Print adjacency list for node key directly [OK]
      Common Mistakes:
      • Confusing keys and values in map
      • Assuming node 1 connects to node 0
      • Expecting adjacency matrix output
      4. The following Go code attempts to create an adjacency matrix but has a bug. What is the bug?
      graph := make([][]int, 3)
      for i := range graph {
        graph[i] = make([]int, 3)
      }
      graph[0][1] = 1
      graph[1][2] = 1
      fmt.Println(graph[0][2])
      medium
      A. The matrix is not initialized properly
      B. graph[0][2] should be 1 but prints 0
      C. Index out of range error
      D. No bug, code runs correctly

      Solution

      1. Step 1: Check matrix initialization

        Each row is initialized with make([]int, 3), so matrix is properly created.
      2. Step 2: Check assigned values and print

        graph[0][1] and graph[1][2] are set to 1; graph[0][2] was never set, so prints 0.
      3. Step 3: Verify no runtime errors

        All indices are within range; no errors occur.
      4. Final Answer:

        No bug, code runs correctly -> Option D
      5. Quick Check:

        Proper initialization and indexing = No bug [OK]
      Hint: Check initialization and index ranges carefully [OK]
      Common Mistakes:
      • Assuming unassigned entries print 1
      • Thinking initialization is missing
      • Expecting index errors without out-of-range access
      5. You need to represent a dense graph with 1000 nodes where you frequently check if an edge exists between any two nodes. Which data structure is best and why? A) Adjacency Matrix for constant-time edge checks B) Adjacency List for memory efficiency C) Edge List for simple iteration D) Map of maps for flexible keys
      hard
      A. Edge List for simple iteration
      B. Adjacency List for memory efficiency
      C. Adjacency Matrix for constant-time edge checks
      D. Map of maps for flexible keys

      Solution

      1. Step 1: Understand graph density and operations

        A dense graph has many edges, close to the maximum possible.
      2. Step 2: Choose data structure for fast edge existence checks

        Adjacency matrix allows O(1) time to check if edge exists between any two nodes.
      3. Step 3: Consider memory tradeoff

        Though adjacency matrix uses more memory, for dense graphs this is acceptable and beneficial.
      4. Final Answer:

        Adjacency Matrix for constant-time edge checks -> Option C
      5. Quick Check:

        Dense graph + fast edge check = Adjacency Matrix [OK]
      Hint: Dense graph + frequent edge checks? Use adjacency matrix [OK]
      Common Mistakes:
      • Choosing adjacency list for dense graphs slows edge checks
      • Ignoring memory vs speed tradeoff
      • Confusing edge list with adjacency matrix
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard