input: Write a python function to remove duplicates from a linked list.
  ```python
  class Node: 
      def __init__(self, data): 
          self.data = data 
          self.next = None 
    
  class LinkedList: 
      def __init__(self): 
          self.head = None
  
      def remove_duplicates(self):
          curr_node = self.head 
          new_list = []
          while curr_node != None: 
              if curr_node.data not in new_list: 
                  new_list.append(curr_node.data) 
              curr_node = curr_node.next
          self.head = None
          for i in new_list:
              self.insert_node(i)
      
      def insert_node(self, data): 
          new_node = Node(data) 
          if self.head is None: 
              self.head = new_node 
              return
          last = self.head 
          while last.next: 
              last = last.next
          last.next = new_node
  
  def linked_list_to_list(ll):
      result = []
      current = ll.head
      while current:
          result.append(current.data)
          current = current.next
      return result
  
  ll = LinkedList()
  ll.insert_node(1)
  ll.insert_node(2)
  ll.insert_node(2)
  ll.insert_node(3)
  ll.insert_node(4)
  ll.insert_node(4)
  ll.insert_node(5)
  ll.remove_duplicates()
  assert linked_list_to_list(ll) == [1, 2, 3, 4, 5]
  
  ll = LinkedList()
  ll.insert_node(1)
  ll.insert_node(1)
  ll.insert_node(1)
  ll.insert_node(1)
  ll.remove_duplicates()
  assert linked_list_to_list(ll) == [1]
  
  ll = LinkedList()
  ll.insert_node(1)
  ll.insert_node(2)
  ll.insert_node(3)
  ll.insert_node(4)
  ll.insert_node(5)
  ll.remove_duplicates()
  assert linked_list_to_list(ll) == [1, 2, 3, 4, 5]
output: class Node: 
      def __init__(self, data): 
          self.data = data 
          self.next = None 
    
  class LinkedList: 
      def __init__(self): 
          self.head = None
  
      def remove_duplicates(self):
          if self.head is None:
              return
          curr_node = self.head
          seen = set()
          seen.add(curr_node.data)
          while curr_node.next:
              if curr_node.next.data in seen:
                  curr_node.next = curr_node.next.next
              else:
                  seen.add(curr_node.next.data)
                  curr_node = curr_node.next
  
      def insert_node(self, data): 
          new_node = Node(data) 
          if self.head is None: 
              self.head = new_node 
              return
          last = self.head 
          while last.next: 
              last = last.next
          last.next = new_node
  
  def linked_list_to_list(ll):
      result = []
      current = ll.head
      while current:
          result.append(current.data)
          current = current.next
      return result
  
  ll = LinkedList()
  ll.insert_node(1)
  ll.insert_node(2)
  ll.insert_node(2)
  ll.insert_node(3)
  ll.insert_node(4)
  ll.insert_node(4)
  ll.insert_node(5)
  ll.remove_duplicates()
  assert linked_list_to_list(ll) == [1, 2, 3, 4, 5]
  
  ll = LinkedList()
  ll.insert_node(1)
  ll.insert_node(1)
  ll.insert_node(1)
  ll.insert_node(1)
  ll.remove_duplicates()
  assert linked_list_to_list(ll) == [1]
  
  ll = LinkedList()
  ll.insert_node(1)
  ll.insert_node(2)
  ll.insert_node(3)
  ll.insert_node(4)
  ll.insert_node(5)
  ll.remove_duplicates()
  assert linked_list_to_list(ll) == [1, 2, 3, 4, 5]