algorithm to remove element from single linked list
May 28, 2013 3 Comments
In this algorithm we were not given with the head node but instead given with the node that is to be deleted.
Lets look at an example:
-------------------------------------- Node : 1->20 | 2->30 | 3->40 | 4->50 | 5 -------------------------------------- Node Address: 10 | 20 | 30 | 40 | 50
And assume we want to remove 3rd element where you are given only the THIRD node that is to be deleted.
Output should be: 1,2,4,5
Since you do not have access to the head, change the given node_to_be_deleted in this manner:
-------------------------------------- Node : 1->20 | 2->30 | 4->50 | 4->50 | 5 -------------------------------------- Node Address : 10 | 20 | 30 | 40 | 50
Instead of deleting the 3rd node we are moving 4th node into 3rd node and ignoring 4th node.
/** * Remove element from SLL * @param node element to be removed */ public void removeElement(Node node) { node.value = node.next.value; node.next = node.next.next; }
you haven’t addressed the case where node.next is null (i.e. delete the last node)
As the solution above doesn’t work if the node to be removed is *last* node in linked list, following check has to be added:
if (node == null || node.next == null){
return false;
}
good corner case, I will add this to the complete program and post it