The Indian Engineer

Problem 237 Delete Node in a Linked List

Posted on 3 mins

Linked-List Pointers Cpp

Problem Statement

Link - Problem 237

Question

There is a singly-linked list head and we want to delete a node node in it.

You are given the node to be deleted node. You will not be given access to the first node of head.

All the values of the linked list are unique, and it is guaranteed that the given node node is not the last node in the linked list.

Delete the given node. Note that by deleting the node, we mean that :

Example 1

Input: head = [4,5,1,9], node = 5
Output: [4,1,9]
Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.
graph LR A((4)) --> B((5)) B --> C((1)) C --> D((9))
graph LR A((4)) --> C((1)) C --> D((9))

Example 2

Input: head = [4,5,1,9], node = 1
Output: [4,5,9]
Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.
graph LR A((4)) --> B((5)) B --> C((1)) C --> D((9))
graph LR A((4)) --> B((5)) B --> D((9))

Constraints

Solution

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    void deleteNode(ListNode* node) {
        ListNode* toDel = node->next;
        node->val = toDel->val;
        node->next = toDel->next;
        delete toDel;
    }
};

Complexity Analysis

Explanation

1. Intuition

2. Code explained


This is a demonstration of Linked List manipulation.