Removing Duplicates from a List
Procedure to remove duplicate nodes from a linked list.
Procedure :
Traverse the list until the next node is not NULL.
If the data of current node and next node is the same, change the next of current node to next of next node and delete the next node.
Else, move the current node to next of current node.
void removeDuplicates(struct node *ptr) {
while (ptr -> next != NULL) {
// If data of the two nodes are same
if (ptr -> data == ptr -> next -> data) {
// Pointer for the node to be deleted
struct node *toDelete = ptr -> next;
// Replace the links
ptr -> next = toDelete -> next;
// Deallocate the memory
free(toDelete);
}
// IMPORTANT : Advance only if no deletion
else {
ptr = ptr -> next;
}
}
}
Contributed by Nitin Ranganath
Last updated
Was this helpful?