fork download
  1. class ListNode:
  2. """Definition for singly-linked list node."""
  3. def __init__(self, value=0, next=None):
  4. self.value = value
  5. self.next = next
  6.  
  7. def reverse_linked_list(head):
  8. """
  9. Reverses a singly linked list.
  10.  
  11. Args:
  12. head (ListNode): The head of the linked list.
  13.  
  14. Returns:
  15. ListNode: The new head of the reversed list.
  16. """
  17. prev = None
  18. current = head
  19.  
  20. while current:
  21. next_node = current.next # store next node
  22. current.next = prev # reverse the link
  23. prev = current # move prev forward
  24. current = next_node # move current forward
  25.  
  26. return prev
  27.  
  28. # Helper to create a linked list from a list of values
  29. def create_linked_list(values):
  30. if not values:
  31. return None
  32. head = ListNode(values[0])
  33. current = head
  34. for val in values[1:]:
  35. current.next = ListNode(val)
  36. current = current.next
  37. return head
  38.  
  39. # Helper to convert linked list to list (for display)
  40. def linked_list_to_list(head):
  41. result = []
  42. while head:
  43. result.append(head.value)
  44. head = head.next
  45. return result
  46.  
  47. original = create_linked_list([1, 2, 3, 4, 5])
  48. reversed_head = reverse_linked_list(original)
  49. print(linked_list_to_list(reversed_head)) # Output: [5, 4, 3, 2, 1]
Success #stdin #stdout 0.04s 9404KB
stdin
Standard input is empty
stdout
[5, 4, 3, 2, 1]