Bird
Raised Fist0
DSA C++programming~10 mins

Delete Node at Specific Position in DSA C++ - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to delete the head node from the linked list.

DSA C++
void deleteHead(Node*& head) {
    if (head == nullptr) return;
    Node* temp = head;
    head = head->[1];
    delete temp;
}
Drag options to blanks, or click blank then click option'
Aprev
Bnext
Cdata
Dhead
Attempts:
3 left
💡 Hint
Common Mistakes
Using head->prev instead of head->next.
Deleting head without moving the pointer.
Assigning head to itself.
2fill in blank
medium

Complete the code to delete the node at position pos (1-based index) in the linked list.

DSA C++
void deleteAtPosition(Node*& head, int pos) {
    if (pos == 1) {
        deleteHead(head);
        return;
    }
    Node* current = head;
    for (int i = 1; i < pos - 1 && current != nullptr; i++) {
        current = current->[1];
    }
    if (current == nullptr || current->next == nullptr) return;
    Node* temp = current->next;
    current->next = temp->next;
    delete temp;
}
Drag options to blanks, or click blank then click option'
Anext
Bprev
Cdata
Dhead
Attempts:
3 left
💡 Hint
Common Mistakes
Using current->prev which is invalid in singly linked list.
Not checking if current is nullptr.
Deleting the wrong node.
3fill in blank
hard

Fix the error in the code to correctly delete the last node of the linked list.

DSA C++
void deleteLast(Node*& head) {
    if (head == nullptr) return;
    if (head->next == nullptr) {
        delete head;
        head = nullptr;
        return;
    }
    Node* current = head;
    while (current->[1]->next != nullptr) {
        current = current->next;
    }
    delete current->next;
    current->next = nullptr;
}
Drag options to blanks, or click blank then click option'
Ahead
Bprev
Cdata
Dnext
Attempts:
3 left
💡 Hint
Common Mistakes
Using current->prev which does not exist in singly linked list.
Deleting current instead of current->next.
Not updating current->next to nullptr after deletion.
4fill in blank
hard

Fill both blanks to delete the node at position pos in a singly linked list.

DSA C++
void deleteAtPosition(Node*& head, int pos) {
    if (pos == 1) {
        Node* temp = head;
        head = head->[1];
        delete temp;
        return;
    }
    Node* current = head;
    for (int i = 1; i < pos - 1 && current != nullptr; i++) {
        current = current->[2];
    }
    if (current == nullptr || current->next == nullptr) return;
    Node* temp = current->next;
    current->next = temp->next;
    delete temp;
}
Drag options to blanks, or click blank then click option'
Anext
Bprev
Cdata
Dhead
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'prev' pointer which does not exist in singly linked list.
Not updating head correctly when deleting the first node.
Not checking for nullptr before accessing pointers.
5fill in blank
hard

Fill all three blanks to delete the node at position pos safely, including edge cases.

DSA C++
void deleteAtPosition(Node*& head, int pos) {
    if (head == nullptr) return;
    if (pos == 1) {
        Node* temp = head;
        head = head->[1];
        delete temp;
        return;
    }
    Node* current = head;
    for (int i = 1; i < pos - 1 && current != nullptr; i++) {
        current = current->[2];
    }
    if (current == nullptr || current->next == nullptr) return;
    Node* temp = current->next;
    current->next = temp->[3];
    delete temp;
}
Drag options to blanks, or click blank then click option'
Anext
Bprev
Dhead
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'prev' pointer which does not exist.
Not updating the head pointer when deleting the first node.
Not checking for nullptr before accessing pointers.

Practice

(1/5)
1. What happens when you delete a node at position 1 in a singly linked list?
easy
A. The head node is removed and the next node becomes the new head
B. The last node is removed
C. The list remains unchanged
D. All nodes are deleted

Solution

  1. Step 1: Understand position 1 in linked list

    Position 1 refers to the head node of the list.
  2. Step 2: Delete the head node

    Removing the head means the next node becomes the new head.
  3. Final Answer:

    The head node is removed and the next node becomes the new head -> Option A
  4. Quick Check:

    Deleting position 1 removes the head [OK]
Hint: Deleting position 1 means removing the head node [OK]
Common Mistakes:
  • Thinking position 1 deletes the last node
  • Assuming list stays same after deletion
  • Deleting all nodes instead of one
2. Which of the following is the correct syntax to delete a node at position pos in a singly linked list in C++?
easy
A. head = head->prev;
B. if (pos == 1) { head = head->next; }
C. delete head->next->prev;
D. head->next = NULL;

Solution

  1. Step 1: Check deletion at position 1

    If position is 1, we update head to head->next to remove the first node.
  2. Step 2: Verify syntax correctness

    if (pos == 1) { head = head->next; } correctly updates head pointer; others are invalid or incorrect for singly linked list.
  3. Final Answer:

    if (pos == 1) { head = head->next; } -> Option B
  4. Quick Check:

    Update head for position 1 deletion [OK]
Hint: For position 1, assign head = head->next [OK]
Common Mistakes:
  • Using prev pointer in singly linked list
  • Setting next pointer to NULL incorrectly
  • Deleting wrong node pointer
3. What is the output linked list after deleting the node at position 3 from the list: 1 -> 2 -> 3 -> 4 -> 5 -> NULL?
medium
A. 2 -> 3 -> 4 -> 5 -> NULL
B. 1 -> 2 -> 3 -> 5 -> NULL
C. 1 -> 3 -> 4 -> 5 -> NULL
D. 1 -> 2 -> 4 -> 5 -> NULL

Solution

  1. Step 1: Identify node at position 3

    Node at position 3 is the node with value 3.
  2. Step 2: Remove node 3 and link previous to next

    Link node 2's next to node 4, skipping node 3.
  3. Final Answer:

    1 -> 2 -> 4 -> 5 -> NULL -> Option D
  4. Quick Check:

    Node 3 removed, list links 2 to 4 [OK]
Hint: Skip node at position by linking previous to next [OK]
Common Mistakes:
  • Removing wrong node
  • Not updating previous node's next pointer
  • Deleting head instead of position 3
4. Given the code snippet below, what is the error when deleting a node at position 4?
void deleteNode(Node*& head, int pos) {
  Node* temp = head;
  for (int i = 1; i < pos - 1; i++) {
    temp = temp->next;
  }
  Node* toDelete = temp->next;
  temp->next = toDelete->next;
  delete toDelete;
}
medium
A. No check if position is valid or if temp is NULL
B. Incorrect loop range causing off-by-one error
C. Deleting head node incorrectly
D. Using delete on a pointer not allocated with new

Solution

  1. Step 1: Analyze loop and pointer usage

    The loop moves temp to node before position to delete, but no checks if temp or temp->next is NULL.
  2. Step 2: Identify missing validation

    Without checking if position is valid or temp is NULL, code may crash on invalid positions.
  3. Final Answer:

    No check if position is valid or if temp is NULL -> Option A
  4. Quick Check:

    Missing boundary checks cause runtime errors [OK]
Hint: Always check pointers before accessing next [OK]
Common Mistakes:
  • Ignoring invalid position inputs
  • Assuming list length is sufficient
  • Not checking for NULL pointers
5. You have a singly linked list: 10 -> 20 -> 30 -> 40 -> 50 -> NULL. Write the resulting list after deleting the node at position 5 and then deleting the node at position 1.
hard
A. 20 -> 30 -> 40 -> 50 -> NULL
B. 10 -> 20 -> 30 -> 40 -> NULL
C. 20 -> 30 -> 40 -> NULL
D. 10 -> 20 -> 30 -> NULL

Solution

  1. Step 1: Delete node at position 5

    Node at position 5 is 50, removing it results in list: 10 -> 20 -> 30 -> 40 -> NULL.
  2. Step 2: Delete node at position 1

    Deleting head node 10 updates head to 20, final list: 20 -> 30 -> 40 -> NULL.
  3. Final Answer:

    20 -> 30 -> 40 -> NULL -> Option C
  4. Quick Check:

    Delete last then head node sequentially [OK]
Hint: Delete last node first, then head node for correct order [OK]
Common Mistakes:
  • Deleting head first then last causing wrong list
  • Not updating head after deleting position 1
  • Forgetting to remove last node
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