Bird
Raised Fist0
DSA C++programming~5 mins

Delete Node at Specific Position in DSA C++ - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Delete Node at Specific Position
O(n)
Understanding Time Complexity

When deleting a node at a specific position in a linked list, we want to know how the time needed changes as the list grows.

We ask: How much work does the program do when the list gets bigger?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


void deleteNode(Node*& head, int position) {
    if (position == 0) {
        Node* temp = head;
        head = head->next;
        delete temp;
        return;
    }
    Node* current = head;
    for (int i = 0; i < position - 1; i++) {
        current = current->next;
    }
    Node* temp = current->next;
    current->next = temp->next;
    delete temp;
}
    

This code deletes the node at the given position in a singly linked list.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The for-loop that moves through the list to reach the node before the one to delete.
  • How many times: It runs (position - 1) times, which depends on the position given.
How Execution Grows With Input

As the list gets longer, deleting a node near the start takes less time, but deleting one near the end takes more time.

Input Size (n)Approx. Operations
10Up to 9 steps to reach the node
100Up to 99 steps to reach the node
1000Up to 999 steps to reach the node

Pattern observation: The number of steps grows roughly in direct proportion to the position of the node, which can be as large as the list size.

Final Time Complexity

Time Complexity: O(n)

This means the time to delete a node grows linearly with the list size in the worst case.

Common Mistake

[X] Wrong: "Deleting a node at any position always takes the same constant time."

[OK] Correct: Because to delete a node, you must first reach it by moving through the list, which takes more time if the node is far from the start.

Interview Connect

Understanding how linked list operations scale helps you explain your code clearly and shows you know how data size affects performance.

Self-Check

"What if we had a doubly linked list with a tail pointer? How would the time complexity for deleting a node at the end change?"

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