Given a Singly Linked List, write a function to delete a given node. Your function must follow following constraints:
1) It must accept a pointer to the start node as the first parameter and node to be deleted as the second parameter i.e., a pointer to head node is not global.
2) It should not return a pointer to the head node.
3) It should not accept pointer to pointer to the head node.
You may assume that the Linked List never becomes empty.
Let the function name be deleteNode(). In a straightforward implementation, the function needs to modify the head pointer when the node to be deleted is the first node. As discussed in previous post, when a function modifies the head pointer, the function must use one of the given approaches, we can’t use any of those approaches here.
We explicitly handle the case when the node to be deleted is the first node, we copy the data of the next node to head and delete the next node. The cases when a deleted node is not the head node can be handled normally by finding the previous node and changing next of the previous node. The following are the implementation.
Given Linked List: 12 15 10 11 5 6 2 3 Deleting node 10: Modified Linked List: 12 15 11 5 6 2 3 Deleting first node Modified Linked List: 15 11 5 6 2 3
Please write comments if you find the above codes/algorithms incorrect, or find other ways to solve the same problem.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Given only a pointer/reference to a node to be deleted in a singly linked list, how do you delete it?
- Delete Nth node from the end of the given linked list
- Delete a Linked List node at a given position
- Given only a pointer to a node to be deleted in a singly linked list, how do you delete it?
- Delete a Doubly Linked List node at a given position
- Create new linked list from two given linked list with greater element at each node
- Delete a node in a Doubly Linked List
- Delete every Kth node from circular linked list
- Recursive function to delete k-th node from linked list
- Delete a Node from linked list without head pointer
- Delete all occurrences of a given key in a doubly linked list
- Delete all the nodes from the doubly linked list that are greater than a given value
- Delete all the nodes from a doubly linked list that are smaller than a given value
- Delete continuous nodes with sum K from a given linked list
- Delete all occurrences of a given key in a linked list
- Insert a node in Linked List before a given node
- Generate Linked List consisting of maximum difference of squares of pairs of nodes from given Linked List
- Write a function to delete a Linked List
- Delete alternate nodes of a Linked List
- Delete N nodes after M nodes of a linked list