input: Write a function to remove all duplicates from a linked list in Python. The function should maintain the order of the original elements.
  
  For the input:
  list_nodes = [7, 14, 28, 28, 28, 35, 49]
  
  Implement the class and function:
  class Node: 
      def __init__(self, data): 
          self.data = data 
          self.next = None 
    
  class LinkedList: 
      def __init__(self): 
          self.head = None
  
      def remove_duplicates(self, list_nodes):
          if not list_nodes:
              return None
          
          unique_elements = set()
          current = self.head
          prev = None
  
          while current:
              if current.data in unique_elements:
                  prev.next = current.next
              else:
                  unique_elements.add(current.data)
                  prev = current
              current = current.next
  
          return self.head
  
      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
  
  List with duplicates: self.remove_duplicates([7, 14, 28, 28, 28, 35, 49])
  Asserts:
  assert self.remove_duplicates([7, 14, 28, 28, 28, 35, 49])==[7, 14, 28, 35, 49]
  assert self.remove_duplicates([5, 5, 5, 5])==[5]
  assert self.remove_duplicates([1, 2, 3, 4, 5])==[1, 2, 3, 4, 5]
  assert self.remove_duplicates([])==[]
output: def remove_duplicates(self, list_nodes):
      if not list_nodes:
          return None
      
      unique_elements = set()
      current = self.head
      prev = None
  
      while current:
          if current.data in unique_elements:
              prev.next = current.next
          else:
              unique_elements.add(current.data)
              prev = current
          current = current.next
  
      return self.head