What is the first step when deleting a node by value in a singly linked list?
Check if the head node contains the value to delete. If yes, update the head to the next node.
Click to reveal answer
beginner
Why do we need to keep track of the previous node when deleting a node by value?
Because to remove the current node, we must update the previous node's next pointer to skip the current node.
Click to reveal answer
beginner
What happens if the value to delete is not found in the linked list?
No changes are made; the list remains the same because the value does not exist.
Click to reveal answer
beginner
In TypeScript, what type should the node's next pointer have in a singly linked list?
It should be of type 'Node | null' to indicate the next node or the end of the list.
Click to reveal answer
beginner
What is the time complexity of deleting a node by value in a singly linked list?
O(n), where n is the number of nodes, because you may need to traverse the entire list to find the value.
Click to reveal answer
What should you do if the head node contains the value to delete?
ASet head to null
BDo nothing
CDelete the entire list
DSet head to head.next
✗ Incorrect
If the head node has the value, update head to the next node to remove it.
When deleting a node by value, why do you need to track the previous node?
ATo update previous.next to skip the deleted node
BTo delete the previous node too
CTo find the tail node
DTo reverse the list
✗ Incorrect
The previous node's next pointer must be updated to remove the current node.
What happens if the value to delete is not found in the list?
AThe list remains unchanged
BThe list is cleared
CThe last node is deleted
DAn error is thrown
✗ Incorrect
If the value is not found, no deletion occurs and the list stays the same.
What is the time complexity of deleting a node by value in a singly linked list?
AO(n^2)
BO(n)
CO(log n)
DO(1)
✗ Incorrect
You may need to check each node once, so time complexity is linear O(n).
In TypeScript, what type should the next pointer of a node have?
Astring
Bnumber
CNode | null
Dboolean
✗ Incorrect
The next pointer points to another node or null if it's the last node.
Explain step-by-step how to delete a node by value in a singly linked list.
Think about how you move through the list and update links.
You got /5 concepts.
Describe the edge cases to consider when deleting a node by value in a linked list.
Consider where the value might be or if it exists at all.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of the Delete Node by Value operation in a linked list?
easy
A. Reverse the linked list
B. Add a new node with the given value at the end
C. Remove the first node that contains the given value
D. Find the position of a node with the given value
Solution
Step 1: Understand the operation goal
The operation aims to remove a node that matches a specific value from the linked list.
Step 2: Identify the correct action
Removing the first node with the given value means deleting that node and linking its previous node to the next node.
Final Answer:
Remove the first node that contains the given value -> Option C
Quick Check:
Delete node by value = Remove first matching node [OK]
Hint: Delete node by value means remove first matching node [OK]
Common Mistakes:
Confusing deletion with insertion
Trying to delete all nodes with the value instead of first
Thinking it finds position only
Assuming it reverses the list
2. Which of the following TypeScript code snippets correctly deletes the head node if its value is 5 from a singly linked list starting at head?
easy
A. if (head.value === 5) head = head.next;
B. head = head.next.value === 5 ? head.next.next : head;
C. while (head.value !== 5) head = head.next;
D. head.next = null;
Solution
Step 1: Check if head node has value 5
If the first node's value is 5, we remove it by moving head to the next node.
Step 2: Verify code correctness
if (head.value === 5) head = head.next; correctly updates head to head.next if head.value is 5, effectively deleting the first node.
Final Answer:
if (head.value === 5) head = head.next; -> Option A
Quick Check:
Delete head node by reassigning head [OK]
Hint: Check head value first, then update head pointer [OK]
Common Mistakes:
Using incorrect conditional expressions
Assigning head.next incorrectly
Not handling head node deletion
Overwriting head without checks
3. Given the linked list: 1 -> 3 -> 5 -> 7 -> null, what is the list after deleting the node with value 5 using the following TypeScript code?
let current = head;
while (current.next !== null) {
if (current.next.value === 5) {
current.next = current.next.next;
break;
}
current = current.next;
}
medium
A. 1 -> 3 -> 5 -> 7 -> null
B. 1 -> 3 -> 7 -> null
C. 3 -> 5 -> 7 -> null
D. 1 -> 7 -> null
Solution
Step 1: Traverse list to find node before value 5
Loop checks nodes until current.next.value is 5, which is true when current is node with value 3.
Step 2: Delete node with value 5 by skipping it
Set current.next to current.next.next, linking node 3 directly to node 7, removing node 5.
Final Answer:
1 -> 3 -> 7 -> null -> Option B
Quick Check:
Skip node with value 5 = 1->3->7 [OK]
Hint: Skip node by linking previous to next [OK]
Common Mistakes:
Not breaking loop after deletion
Deleting wrong node
Not updating pointers correctly
Confusing current and current.next
4. Consider this buggy TypeScript code to delete a node by value from a singly linked list:
function deleteNode(head: Node | null, value: number): Node | null {
let current = head;
while (current !== null) {
if (current.next?.value === value) {
current.next = current.next.next;
}
current = current.next!;
}
return head;
}
What is the main problem with this code?
medium
A. It may cause a runtime error when current.next is null
B. It deletes all nodes with the value instead of the first
C. It does not handle deletion if head node has the value
D. It reverses the linked list accidentally
Solution
Step 1: Analyze the loop termination
The while (current !== null) continues to the last node where current.next is null. The if uses ?. safely, but then executes current = current.next!;, and ! non-null assertion on null causes runtime error.
Step 2: Confirm the bug triggers always
For any non-empty list, it crashes at the last node regardless of value, preventing correct execution.
Final Answer:
It may cause a runtime error when current.next is null -> Option A
Quick Check:
current.next! on null = runtime error [OK]
Hint: Beware of non-null assertion ! on potentially null next [OK]
Common Mistakes:
Using non-null assertion (!) on potentially null next
Assuming current.next always exists
Not breaking after deletion
Confusing current and current.next updates
5. You have a singly linked list: 2 -> 4 -> 6 -> 4 -> 8 -> null. You want to delete the first node with value 4. After deletion, you want to insert a new node with value 10 right after the deleted node's position. Which sequence of operations correctly achieves this?
hard
A. Delete first 4, then insert 10 after node 6
B. Insert 10 at head, then delete first 4
C. Delete all 4s, then insert 10 at end
D. Delete first 4, then insert 10 after node 2
Solution
Step 1: Delete first node with value 4
The first 4 is the second node, so remove it by linking node 2 to node 6.
Step 2: Insert new node with value 10 after node 2
Create new node 10 and link it after node 2, then link new node to node 6.
Final Answer:
Delete first 4, then insert 10 after node 2 -> Option D
Quick Check:
Delete 4, insert 10 after previous node [OK]
Hint: Delete node, then insert new node at same position [OK]
Common Mistakes:
Inserting new node at wrong position
Deleting all nodes with value 4
Not updating links correctly
Inserting before deletion
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.