193030

Linked list duplicates remove with set

Jun 18th, 2021
909
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Example program
  2. #include <iostream>
  3. #include <string>
  4. #include <set>
  5.  
  6. using namespace std;
  7.  
  8. struct Node
  9. {
  10.     int data;
  11.     struct Node* next;
  12. } *first = NULL;
  13.  
  14. void add(int data)
  15. {
  16.         struct Node *p;
  17.  
  18.     if(first == NULL)
  19.     {
  20.         first = new  Node;
  21.         first->data = data;
  22.         first->next = NULL;
  23.  
  24.     }
  25.  
  26.     else
  27.     {
  28.         p = first;
  29.         while(p->next !=NULL)
  30.         {
  31.             p = p->next;
  32.         }
  33.          struct Node *t = new struct Node;
  34.     t->data = data;
  35.     p->next = t;
  36.  
  37.     }
  38.    
  39.    
  40. }
  41.  
  42. void print(struct Node *p)
  43. {
  44.     if(p)
  45.     {
  46.         cout << p->data << endl;
  47.         print(p->next);
  48.     }
  49.    
  50. }
  51.  
  52. void removeDuplicates(struct Node *p)
  53. {
  54.     set <int> s1;
  55.     struct Node *prev = NULL;
  56.     while(p)
  57.     {
  58.  
  59.         if(s1.count(p->data) == 1)
  60.         {
  61.             prev->next = p->next;
  62.         }
  63.         else
  64.         {
  65.             s1.insert(p->data);
  66.  
  67.         }
  68.          prev = p;
  69.         p = p->next;
  70.  
  71.     }
  72.    
  73.    
  74. }
  75.  
  76.  
  77. int main()
  78. {
  79.   add(10);
  80.   add(10);
  81.   add(20);
  82.   add(20);
  83.   removeDuplicates(first);
  84.   print(first);
  85. }
  86.  
RAW Paste Data