fork download
  1. #include <iostream>
  2. #include <unordered_set>
  3. using namespace std;
  4.  
  5. struct Node {
  6. int data;
  7. Node* next;
  8. };
  9.  
  10. void removeDuplicates(Node* head) {
  11. unordered_set<int> seen;
  12. Node* curr = head;
  13. Node* prev = nullptr;
  14.  
  15. while (curr != nullptr) {
  16. if (seen.count(curr->data) > 0) {
  17. prev->next = curr->next;
  18. delete curr;
  19. } else {
  20. seen.insert(curr->data);
  21. prev = curr;
  22. }
  23. curr = prev->next;
  24. }
  25. }
  26.  
  27. int main() {
  28. Node* head = new Node{3, new Node{2, new Node{3, new Node{2, new Node{4, nullptr}}}}};
  29. removeDuplicates(head);
  30. while (head != nullptr) {
  31. cout << head->data << " ";
  32. head = head->next;
  33. }
  34. return 0;
  35. }
Success #stdin #stdout 0.01s 5516KB
stdin
Standard input is empty
stdout
3 2 4