Bird
Raised Fist0
DSA Typescriptprogramming~30 mins

Delete Node at Specific Position in DSA Typescript - Build from Scratch

Choose your learning style10 modes available
Delete Node at Specific Position
📖 Scenario: Imagine you have a list of tasks to do today. Sometimes you want to remove a task from a certain position in the list. We will use a linked list to represent this task list.
🎯 Goal: Build a program that creates a linked list of tasks, then deletes a task at a specific position, and finally shows the updated list.
📋 What You'll Learn
Create a linked list with exactly these tasks in order: 'Wake up', 'Brush teeth', 'Eat breakfast', 'Go to work', 'Exercise'
Create a variable called position set to 3 to represent the position of the task to delete
Write a function called deleteNodeAtPosition that deletes the node at the given position in the linked list
Print the linked list after deletion in the format: task1 -> task2 -> ... -> null
💡 Why This Matters
🌍 Real World
Linked lists are used in many applications like task scheduling, undo functionality, and memory management where items need to be added or removed dynamically.
💼 Career
Understanding linked lists and node deletion is fundamental for software developers working with data structures, improving problem-solving and coding interview skills.
Progress0 / 4 steps
1
Create the linked list of tasks
Create a linked list class called Node with a task string and a next pointer. Then create the linked list with these tasks in order: 'Wake up', 'Brush teeth', 'Eat breakfast', 'Go to work', 'Exercise'. Store the head node in a variable called head.
DSA Typescript
Hint

Start by defining a Node class with task and next. Then link nodes in order.

2
Set the position to delete
Create a variable called position and set it to 3. This means we want to delete the task at position 3 in the linked list (1-based index).
DSA Typescript
Hint

Just create a variable position and assign it the number 3.

3
Write the function to delete node at position
Write a function called deleteNodeAtPosition that takes the head of the linked list and the position to delete. It should remove the node at that position and return the new head of the list. Use 1-based indexing for positions.
DSA Typescript
Hint

Check if position is 1 to remove head. Otherwise, move to node before position and change its next pointer.

4
Print the linked list after deletion
Call deleteNodeAtPosition with head and position. Then print the tasks in the linked list separated by -> and ending with null. For example: Wake up -> Brush teeth -> Go to work -> Exercise -> null
DSA Typescript
Hint

After deleting, loop through the list and join tasks with ' -> ', then add 'null' at the end.

Practice

(1/5)
1. What does deleting a node at a specific position in a singly linked list mean?
easy
A. Removing the node located at that position and linking its previous node to the next node
B. Adding a new node at that position
C. Swapping the node at that position with the last node
D. Counting the total nodes in the list

Solution

  1. Step 1: Understand node deletion in linked list

    Deleting a node means removing it and connecting the previous node to the next node to keep the list intact.
  2. Step 2: Apply to specific position

    At a specific position, we find the node before it and change its next pointer to skip the node to delete.
  3. Final Answer:

    Removing the node located at that position and linking its previous node to the next node -> Option A
  4. Quick Check:

    Delete node = remove and link neighbors [OK]
Hint: Delete means remove and link neighbors, not add or swap [OK]
Common Mistakes:
  • Thinking deletion adds a node
  • Confusing deletion with swapping nodes
  • Ignoring the need to link previous and next nodes
2. Which of the following TypeScript code snippets correctly deletes a node at position pos in a singly linked list starting with head?
easy
A. if (pos === 0) head = head.next; else { let temp = head; for (let i = 0; i < pos - 1; i++) temp = temp.next; temp.next = temp.next.next; }
B. if (pos === 0) head = head.next; else { let temp = head; for (let i = 0; i < pos; i++) temp = temp.next; temp.next = temp.next.next; }
C. if (pos === 0) head = head.next; else { let temp = head; for (let i = 0; i <= pos; i++) temp = temp.next; temp.next = temp.next.next; }
D. if (pos === 0) head = head.next; else { let temp = head; for (let i = 1; i <= pos; i++) temp = temp.next; temp.next = temp.next.next; }

Solution

  1. Step 1: Handle deletion at head (position 0)

    If position is 0, simply move head to next node to delete the first node.
  2. Step 2: Traverse to node before position

    Loop from 0 to pos-1 to reach node before the one to delete, then link its next to next.next.
  3. Final Answer:

    if (pos === 0) head = head.next; else { let temp = head; for (let i = 0; i < pos - 1; i++) temp = temp.next; temp.next = temp.next.next; } -> Option A
  4. Quick Check:

    Loop to pos-1, then skip node [OK]
Hint: Loop to pos-1 to delete node at pos [OK]
Common Mistakes:
  • Looping to pos instead of pos-1
  • Not handling deletion at head correctly
  • Accessing temp.next.next when temp.next is null
3. Given the linked list: 10 -> 20 -> 30 -> 40 -> 50 -> null and the code below, what will be the list after deleting the node at position 2?
let head = { val: 10, next: { val: 20, next: { val: 30, next: { val: 40, next: { val: 50, next: null } } } } };
let pos = 2;
if (pos === 0) head = head.next;
else {
  let temp = head;
  for (let i = 0; i < pos - 1; i++) temp = temp.next;
  temp.next = temp.next.next;
}
medium
A. 10 -> 30 -> 40 -> 50 -> null
B. 10 -> 20 -> 30 -> 40 -> 50 -> null
C. 10 -> 20 -> 40 -> 50 -> null
D. 20 -> 30 -> 40 -> 50 -> null

Solution

  1. Step 1: Identify node at position 2

    Position 2 node has value 30 (0-based indexing: 10 at 0, 20 at 1, 30 at 2).
  2. Step 2: Delete node at position 2

    Traverse to node at position 1 (value 20), then set its next to node at position 3 (value 40), skipping 30.
  3. Final Answer:

    10 -> 20 -> 40 -> 50 -> null -> Option C
  4. Quick Check:

    Node 30 removed, neighbors linked [OK]
Hint: Skip node at pos by linking previous to next.next [OK]
Common Mistakes:
  • Deleting wrong node due to off-by-one error
  • Not updating links properly
  • Confusing position indexing
4. The following TypeScript code attempts to delete a node at position pos in a singly linked list but causes a runtime error. What is the error?
function deleteNode(head: Node | null, pos: number): Node | null {
  if (pos === 0) return head.next;
  let temp = head;
  for (let i = 0; i < pos; i++) {
    temp = temp.next!;
  }
  temp.next = temp.next!.next;
  return head;
}
medium
A. Incorrect loop range causes skipping the wrong node
B. Accessing temp.next when temp is null causes runtime error
C. Missing check for empty list before deletion
D. Returning head.next instead of head after deletion

Solution

  1. Step 1: Analyze loop traversal

    The loop runs from 0 to pos, moving temp forward pos times, which can make temp null if pos >= list length.
  2. Step 2: Identify null access

    After loop, temp may be null, so accessing temp.next causes runtime error.
  3. Final Answer:

    Accessing temp.next when temp is null causes runtime error -> Option B
  4. Quick Check:

    Loop overshoots, temp becomes null, then temp.next fails [OK]
Hint: Loop to pos-1, not pos, to avoid null access [OK]
Common Mistakes:
  • Looping too far causing null pointer
  • Not checking for empty list
  • Misunderstanding return value after deletion
5. You have a singly linked list representing a playlist: Song1 -> Song2 -> Song3 -> Song4 -> Song5 -> null. You want to delete the 4th song (position 3). After deletion, you want to insert a new song Song6 at the same position. Which sequence of operations correctly achieves this?
hard
A. Delete node at position 3, then insert new node at head
B. Delete node at position 3, then traverse to position 3 and insert new node after it
C. Delete node at position 2, then traverse to position 3 and insert new node after it
D. Delete node at position 3, then traverse to position 2 and insert new node after it

Solution

  1. Step 1: Delete node at position 3

    Remove the node at position 3 (Song4) by linking node at position 2 to node at position 4.
  2. Step 2: Insert new node at position 3

    Traverse to position 2, then insert new node after it to place Song6 at position 3.
  3. Final Answer:

    Delete node at position 3, then traverse to position 2 and insert new node after it -> Option D
  4. Quick Check:

    Delete at pos 3, insert after pos 2 = new pos 3 [OK]
Hint: Insert after pos-1 to place new node at pos [OK]
Common Mistakes:
  • Inserting at wrong position after deletion
  • Deleting wrong node position
  • Inserting at head instead of correct position
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