input: Write a function to delete a certain element from a linked list. If the element to be deleted is the head node, update the head to the next node. If the element is not found, return the original linked list.
  assert delete_node(create_linked_list([1, 2, 3]), 2)==[1, 3]
  assert delete_node(create_linked_list([1, 2, 3]), 1)==[2, 3]
  assert delete_node(create_linked_list([1, 2, 3]), 3)==[1, 2]
  assert delete_node(create_linked_list([1, 2, 3]), 4)==[1, 2, 3]
  assert delete_node(create_linked_list([]), 1)==[]
output: def delete_node(head, value):
      if head is None:
          return head
      
      if head.val == value:
          return head.next
      
      current = head
      while current.next:
          if current.next.val == value:
              current.next = current.next.next
              return head
          current = current.next
      
      return head