Javascript Program For Removing All Occurrences Of Duplicates From A Sorted Linked List - GeeksforGeeks

10 Jan, 2022
Given a sorted linked list, delete all nodes that have duplicate numbers (all occurrences), leaving only numbers that appear once in the original list. Examples:
Input: 23->28->28->35->49->49->53->53
Output: 23->35

Input: 11->11->11->11->75->75
Output: empty List
Note that this is different from Remove Duplicates From Linked List
The idea is to maintain a pointer (prev) to the node which just previous to the block of nodes we are checking for duplicates. In the first example, the pointer prev would point to 23 while we check for duplicates for node 28. Once we reach the last duplicate node with value 28 (name it current pointer), we can make the next field of prev node to be the next of current and update current=current.next. This would delete the block of nodes with value 28 which has duplicates.
Javascript
<script>// Javascript program to remove all // occurrences of duplicates from a // sorted linked list   // Class to create Linked lIst // head of linked listvar head = null;  class Node{  constructor(val) {    // Default value of the next     // pointer field    this.val = val;    this.next = null;}}  // Function to insert data nodes into// the Linked List at the frontfunction insert(data) {    var new_node = new Node(data);    new_node.next = head;    head = new_node;}  // Function to remove all occurrences// of duplicate elementsfunction removeAllDuplicates() {    // Create a dummy node that acts like     // a fake head of list pointing to the     // original head    var dummy = new Node(0);      // Dummy node points to the original head    dummy.next = head;          var prev = dummy;    var current = head;      while (current != null)     {        // Until the current and previous values        // are same, keep updating current        while (current.next != null &&                prev.next.val == current.next.val)            current = current.next;          // If current has unique value i.e current        // is not updated, Move the prev pointer        // to next node        if (prev.next == current)            prev = prev.next;          // When current is updated to the last        // duplicate value of that segment, make        // prev the next of current        else            prev.next = current.next;          current = current.next;    }      // Update original head to the next of     // dummy node    head = dummy.next;}  // Function to print the list elementsfunction printList() {    var trav = head;    if (head == null)        document.write(" List is empty");      while (trav != null)     {        document.write(trav.val + " ");        trav = trav.next;    }}  // Driver codeinsert(53);insert(53);insert(49);insert(49);insert(35);insert(28);insert(28);insert(23);  document.write("Before removal of duplicates<br/>");printList();  removeAllDuplicates();  document.write("<br/>After removal of duplicates<br/>");printList();// This code is contributed by umadevi9616</script>
Output:
List before removal of duplicates
23 28 28 35 49 49 53 53 
List after removal of duplicates
23 35 
Time Complexity: O(n)Please refer complete article on Remove all occurrences of duplicates from a sorted Linked List for more details!
Linked List
Linked List
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Delete a node in a Doubly Linked List
Given a linked list which is sorted, how will you insert in sorted way
Insert a node at a specific position in a linked list
Circular Linked List | Set 2 (Traversal)
Program to implement Singly Linked List in C++ using class
Swap nodes in a linked list without swapping data
Priority Queue using Linked List
Circular Singly Linked List | Insertion
Real-time application of Data Structures
Insertion Sort for Singly Linked List