Bird
Raised Fist0
DSA Typescriptprogramming

Get Length of Linked List in DSA Typescript

Choose your learning style10 modes available
Mental Model
Count how many nodes are in the linked list by moving from the start to the end one by one.
Analogy: Like counting people in a line by asking each person to point to the next until no one is left.
head -> 1 -> 2 -> 3 -> null
Dry Run Walkthrough
Input: list: 1 -> 2 -> 3 -> null
Goal: Find how many nodes are in the list
Step 1: start at head node with value 1
[curr->1] -> 2 -> 3 -> null
Why: We begin counting from the first node
Step 2: move curr to next node with value 2, count = 2
1 -> [curr->2] -> 3 -> null
Why: Count each node as we move forward
Step 3: move curr to next node with value 3, count = 3
1 -> 2 -> [curr->3] -> null
Why: Continue counting nodes until the end
Step 4: move curr to null, stop counting
1 -> 2 -> 3 -> [curr->null]
Why: Reached end of list, counting complete
Result:
1 -> 2 -> 3 -> null
Length = 3
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;
  }

  getLength(): number {
    let count = 0;
    let curr = this.head;
    while (curr !== null) {
      count++;
      curr = curr.next;
    }
    return count;
  }

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

// Driver code
const list = new LinkedList();
list.append(1);
list.append(2);
list.append(3);
console.log(list.getLength());
let count = 0; let curr = this.head;
initialize count and start at head node
while (curr !== null) {
loop until we reach end of list
count++;
increment count for each node visited
curr = curr.next;
move to next node to continue counting
return count;
return total number of nodes counted
OutputSuccess
3
Complexity Analysis
Time: O(n) because we visit each node once to count
Space: O(1) because we use only a few variables regardless of list size
vs Alternative: Counting nodes in an array is O(1) by length property, but linked list requires traversal O(n)
Edge Cases
empty list
returns 0 because there are no nodes
DSA Typescript
while (curr !== null) {
single node list
returns 1 because only one node exists
DSA Typescript
while (curr !== null) {
When to Use This Pattern
When asked to find how many elements are in a linked list, use traversal counting because linked lists do not store size.
Common Mistakes
Mistake: Forgetting to move to the next node inside the loop causing infinite loop
Fix: Add 'curr = curr.next;' inside the while loop to advance pointer
Mistake: Starting count at 1 instead of 0 causing off-by-one error
Fix: Initialize count to 0 before counting nodes
Summary
Counts the number of nodes in a linked list by traversing from head to end.
Use when you need to know the size of a linked list which does not store length.
The key insight is to move node by node and count until you reach the end (null).

Practice

(1/5)
1. What does the function getLength(head: ListNode | null): number typically return when given the head of a linked list?
easy
A. The last node in the linked list
B. The number of nodes in the linked list
C. The value of the first node
D. The sum of all node values

Solution

  1. Step 1: Understand the function purpose

    The function named getLength is designed to count nodes, so it returns the number of nodes in the list.
  2. Step 2: Confirm what is returned

    Since it counts nodes, it returns the total count, not values or nodes themselves.
  3. Final Answer:

    The number of nodes in the linked list -> Option B
  4. Quick Check:

    Function name and return type indicate count [OK]
Hint: Function named getLength returns count of nodes [OK]
Common Mistakes:
  • Confusing length with node value
  • Thinking it returns the last node
  • Assuming it sums node values
2. Which of the following TypeScript code snippets correctly initializes a variable count to start counting nodes in a linked list?
easy
A. let count = 0;
B. let count = null;
C. let count = head;
D. let count = undefined;

Solution

  1. Step 1: Identify the correct initial value for counting

    Counting nodes requires a number starting at zero, so count should be initialized to 0.
  2. Step 2: Check other options

    Initializing to null, head, or undefined is incorrect for counting.
  3. Final Answer:

    let count = 0; -> Option A
  4. Quick Check:

    Counting starts at zero [OK]
Hint: Start counting nodes from zero [OK]
Common Mistakes:
  • Initializing count to null or undefined
  • Using head node as count
  • Not initializing count at all
3. What will be the output of the following TypeScript code?
class ListNode {
  val: number;
  next: ListNode | null;
  constructor(val: number) {
    this.val = val;
    this.next = null;
  }
}

function getLength(head: ListNode | null): number {
  let count = 0;
  let current = head;
  while (current !== null) {
    count++;
    current = current.next;
  }
  return count;
}

const node1 = new ListNode(10);
const node2 = new ListNode(20);
const node3 = new ListNode(30);
node1.next = node2;
node2.next = node3;

console.log(getLength(node1));
medium
A. 3
B. 2
C. 0
D. Error

Solution

  1. Step 1: Trace the linked list nodes

    There are three nodes linked: node1 -> node2 -> node3 -> null.
  2. Step 2: Count nodes in the while loop

    The loop increments count for each node until current is null, so count becomes 3.
  3. Final Answer:

    3 -> Option A
  4. Quick Check:

    3 nodes counted [OK]
Hint: Count increments once per node until null [OK]
Common Mistakes:
  • Counting only 2 nodes by missing last
  • Returning zero if loop not entered
  • Syntax errors causing runtime error
4. Identify the error in this TypeScript function to get linked list length:
function getLength(head: ListNode | null): number {
  let count = 0;
  let current = head;
  while (current.next !== null) {
    count++;
    current = current.next;
  }
  return count;
}
medium
A. It counts nodes twice
B. It will cause an infinite loop
C. It throws a syntax error
D. It misses counting the last node

Solution

  1. Step 1: Analyze the while loop condition

    The loop runs while current.next !== null, so it stops before the last node.
  2. Step 2: Understand counting effect

    Because the last node's next is null, it is not counted, so length is one less than actual.
  3. Final Answer:

    It misses counting the last node -> Option D
  4. Quick Check:

    Loop condition excludes last node [OK]
Hint: Loop until current is null, not current.next [OK]
Common Mistakes:
  • Using current.next in loop condition
  • Not counting last node
  • Assuming loop counts all nodes
5. Given a linked list where each node has a val and next, how would you modify the getLength function to return 0 if the list is empty and the correct length otherwise?
hard
A. Return length as 1 if head is null
B. Start count at 1 and loop while current is not null
C. Check if head is null before loop; return 0 if true, else count nodes
D. Use a for loop from 0 to head.val

Solution

  1. Step 1: Handle empty list case

    Check if head is null before counting; if yes, return 0 immediately.
  2. Step 2: Count nodes if list is not empty

    If head is not null, loop through nodes incrementing count until current is null.
  3. Final Answer:

    Check if head is null before loop; return 0 if true, else count nodes -> Option C
  4. Quick Check:

    Empty list returns 0, else counts nodes [OK]
Hint: Return 0 if head is null before counting [OK]
Common Mistakes:
  • Starting count at 1 incorrectly
  • Returning 1 for empty list
  • Using node value instead of node presence
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