Get Length of Linked List in DSA Javascript - Time & Space Complexity
We want to know how long it takes to find the length of a linked list as the list grows.
How does the time needed change when the list gets bigger?
Analyze the time complexity of the following code snippet.
function getLength(head) {
let count = 0;
let current = head;
while (current !== null) {
count++;
current = current.next;
}
return count;
}
This code counts how many nodes are in a linked list by moving from the start to the end.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The while loop that visits each node once.
- How many times: Once for every node in the list (n times).
As the list gets longer, the code checks more nodes one by one.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 steps |
| 100 | About 100 steps |
| 1000 | About 1000 steps |
Pattern observation: The number of steps grows directly with the number of nodes.
Time Complexity: O(n)
This means the time to find the length grows in a straight line with the list size.
[X] Wrong: "The length can be found instantly without checking nodes."
[OK] Correct: Since linked lists don't store their size, we must visit each node to count them.
Understanding this helps you explain how linked lists work and how to measure their size efficiently.
"What if the linked list stored its length as a property? How would the time complexity change?"
Practice
Solution
Step 1: Understand linked list structure
A linked list is made of nodes connected one after another.Step 2: Define length meaning
The length counts how many nodes are in the list, regardless of their values.Final Answer:
The number of nodes in the linked list -> Option CQuick Check:
Length = number of nodes [OK]
- Confusing length with node values
- Thinking length is memory size
- Counting only first or last node
Solution
Step 1: Identify correct initialization for counting
Counting starts from zero, so length should be a number 0.Step 2: Check variable types
Using null, undefined, or string '0' is incorrect for numeric counting.Final Answer:
let length = 0; -> Option AQuick Check:
Initialize count with 0 [OK]
- Using null or undefined instead of 0
- Using string '0' instead of number 0
- Not initializing length variable
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
const head = new Node(1);
head.next = new Node(2);
head.next.next = new Node(3);
let length = 0;
let current = head;
while (current !== null) {
length++;
current = current.next;
}
console.log(length);Solution
Step 1: Trace linked list nodes
Nodes are 1 -> 2 -> 3 -> null, so 3 nodes total.Step 2: Count nodes in while loop
Loop increments length for each node until current is null, so length becomes 3.Final Answer:
3 -> Option AQuick Check:
Count nodes = 3 [OK]
- Stopping loop early
- Not incrementing length
- Incorrectly checking current node
function getLength(head) {
let length = 0;
let current = head;
while (current.next !== null) {
length++;
current = current.next;
}
return length;
}Solution
Step 1: Analyze loop condition
Checking current.next !== null misses counting the last node.Step 2: Correct loop condition
Loop should run while current !== null to count all nodes including last.Final Answer:
The loop condition should check current !== null, not current.next !== null -> Option BQuick Check:
Loop until current is null to count all nodes [OK]
- Stopping before last node
- Starting length at 1 incorrectly
- Returning wrong variable
Solution
Step 1: Traverse all nodes
Loop through each node from head to null as usual.Step 2: Count only non-zero value nodes
Inside loop, increment length only if current.value !== 0 to skip zeros.Final Answer:
Increment length only if current.value !== 0 inside the traversal loop -> Option DQuick Check:
Count nodes with value != 0 during traversal [OK]
- Skipping nodes incorrectly
- Counting all then subtracting zeros
- Modifying list structure
Ready to prove it?
Pass the test and this pattern moves unknown
