Bird
Raised Fist0
DSA Typescriptprogramming

Traversal and Printing a Linked List in DSA Typescript

Choose your learning style10 modes available
Mental Model
We move through each node in the list one by one, reading its value until we reach the end.
Analogy: Like walking down a line of people holding hands, you look at each person's face until you reach the last person who is not holding anyone's hand.
head -> [1] -> [2] -> [3] -> null
           ↑
Dry Run Walkthrough
Input: list: 1 -> 2 -> 3 -> null
Goal: Print all values in the linked list in order
Step 1: Start at the head node with value 1
head -> [1 ↑] -> [2] -> [3] -> null
Why: We begin traversal from the first node
Step 2: Print value 1 and move to next node
head -> [1] -> [2 ↑] -> [3] -> null
Why: After reading current node, move forward to continue
Step 3: Print value 2 and move to next node
head -> [1] -> [2] -> [3 ↑] -> null
Why: Continue reading nodes until end
Step 4: Print value 3 and move to next node which is null
head -> [1] -> [2] -> [3] -> null ↑
Why: Reached end of list, stop traversal
Result:
1 -> 2 -> 3 -> null
Annotated Code
DSA Typescript
class Node {
  value: number;
  next: Node | null;

  constructor(value: number) {
    this.value = value;
    this.next = null;
  }
}

class LinkedList {
  head: Node | null;

  constructor() {
    this.head = null;
  }

  append(value: number): void {
    const newNode = new Node(value);
    if (!this.head) {
      this.head = newNode;
      return;
    }
    let current = this.head;
    while (current.next) {
      current = current.next;
    }
    current.next = newNode;
  }

  printList(): void {
    let current = this.head;
    let output = '';
    while (current) {
      output += current.value + ' -> ';
      current = current.next; // advance to next node
    }
    output += 'null';
    console.log(output);
  }
}

// Driver code
const list = new LinkedList();
list.append(1);
list.append(2);
list.append(3);
list.printList();
current = this.head;
start traversal from the head node
while (current) {
continue until we reach the end (null)
output += current.value + ' -> ';
collect current node's value for printing
current = current.next; // advance to next node
move to next node to continue traversal
OutputSuccess
1 -> 2 -> 3 -> null
Complexity Analysis
Time: O(n) because we visit each of the n nodes exactly once
Space: O(n) for the output string that holds all node values
vs Alternative: Compared to recursive printing which uses extra call stack space, this iterative approach uses constant extra space besides output
Edge Cases
empty list
prints 'null' since there are no nodes
DSA Typescript
let current = this.head;
single node list
prints the single value followed by 'null'
DSA Typescript
while (current) {
When to Use This Pattern
When you need to read or display all elements in a linked list, use traversal by moving from head to next nodes until null.
Common Mistakes
Mistake: Not advancing the current pointer inside the loop, causing an infinite loop
Fix: Add 'current = current.next;' inside the traversal loop to move forward
Mistake: Printing node values without a separator or missing the 'null' at the end
Fix: Concatenate ' -> ' after each value and add 'null' after traversal ends
Summary
It visits each node in the linked list from start to end and prints their values.
Use it when you want to see or process all elements stored in a linked list.
The key is to move step-by-step from one node to the next until you reach the end.

Practice

(1/5)
1. What does it mean to traverse a linked list?
easy
A. Visit each node in the list one by one from start to end
B. Add a new node at the end of the list
C. Delete the first node of the list
D. Reverse the order of nodes in the list

Solution

  1. Step 1: Understand traversal meaning

    Traversal means going through each element in order to access or process it.
  2. Step 2: Apply to linked list context

    In a linked list, traversal means visiting each node starting from the head until the end (null).
  3. Final Answer:

    Visit each node in the list one by one from start to end -> Option A
  4. Quick Check:

    Traversal = Visit nodes sequentially [OK]
Hint: Traversal means visiting nodes one after another [OK]
Common Mistakes:
  • Confusing traversal with insertion or deletion
  • Thinking traversal changes the list order
  • Assuming traversal skips nodes
2. Which of the following is the correct way to start traversing a linked list in TypeScript?
easy
A. let current = head;
B. let current = tail;
C. let current = null;
D. let current = new Node();

Solution

  1. Step 1: Identify starting point for traversal

    Traversal starts from the first node, called head, to visit all nodes.
  2. Step 2: Check options for correct initialization

    Setting current to head allows moving through nodes; tail or null won't start traversal properly.
  3. Final Answer:

    let current = head; -> Option A
  4. Quick Check:

    Start traversal at head node [OK]
Hint: Always start traversal from the head node [OK]
Common Mistakes:
  • Starting traversal from tail which is the last node
  • Initializing current to null which skips traversal
  • Creating a new node instead of using existing head
3. What will be the output of the following TypeScript code that prints a linked list?
class Node {
  value: number;
  next: Node | null;
  constructor(value: number) {
    this.value = value;
    this.next = null;
  }
}

const head = new Node(1);
head.next = new Node(2);
head.next.next = new Node(3);

let current = head;
while (current !== null) {
  console.log(current.value);
  current = current.next;
}
medium
A. 3 2 1
B. 1 2 3
C. 1 3 2
D. 2 3 1

Solution

  1. Step 1: Understand list structure

    The list nodes are linked as 1 -> 2 -> 3 -> null.
  2. Step 2: Trace the while loop output

    The loop prints current.value starting at head (1), then moves to 2, then 3, then stops at null.
  3. Final Answer:

    1 2 3 -> Option B
  4. Quick Check:

    Print nodes in order: 1 2 3 [OK]
Hint: Print values while moving from head to next until null [OK]
Common Mistakes:
  • Printing in reverse order by mistake
  • Skipping nodes by incorrect pointer update
  • Confusing node values order
4. Identify the error in this linked list traversal code and select the fix:
let current = head;
while (current.next !== null) {
  console.log(current.value);
  current = current.next;
}
medium
A. Remove console.log inside the loop
B. Add console.log after the loop
C. Initialize current to null
D. Change condition to current !== null

Solution

  1. Step 1: Analyze loop condition

    The loop stops when current.next is null, so it skips printing the last node.
  2. Step 2: Fix condition to include last node

    Changing condition to current !== null ensures all nodes, including last, are printed.
  3. Final Answer:

    Change condition to current !== null -> Option D
  4. Quick Check:

    Loop until current is null to print all nodes [OK]
Hint: Loop until current is null to include last node [OK]
Common Mistakes:
  • Using current.next !== null misses last node
  • Not updating current inside loop causes infinite loop
  • Printing after loop instead of inside
5. Given a linked list with nodes containing values 5 -> 10 -> 15 -> null, write a TypeScript function to traverse and collect these values into an array. What will be the returned array after traversal?
hard
A. [15, 10, 5]
B. [5, 15, 10]
C. [5, 10, 15]
D. [10, 5, 15]

Solution

  1. Step 1: Traverse from head to end

    Start at head (5), then move to 10, then 15, collecting values in order.
  2. Step 2: Collect values in array during traversal

    Push each node's value into an array as you visit it, resulting in [5, 10, 15].
  3. Final Answer:

    [5, 10, 15] -> Option C
  4. Quick Check:

    Values collected in order visited [OK]
Hint: Collect values while traversing from head to null [OK]
Common Mistakes:
  • Collecting values in reverse order
  • Skipping nodes by wrong pointer update
  • Returning array before traversal completes
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