class ListNode:
"""Definition for singly-linked list node."""
def __init__(self, value=0, next=None):
self.value = value
self.next = next
def reverse_linked_list(head):
"""
Reverses a singly linked list.
Args:
head (ListNode): The head of the linked list.
Returns:
ListNode: The new head of the reversed list.
"""
prev = None
current = head
while current:
next_node = current.next # store next node
current.next = prev # reverse the link
prev = current # move prev forward
current = next_node # move current forward
return prev
# Helper to create a linked list from a list of values
def create_linked_list(values):
if not values:
return None
head = ListNode(values[0])
current = head
for val in values[1:]:
current.next = ListNode(val)
current = current.next
return head
# Helper to convert linked list to list (for display)
def linked_list_to_list(head):
result = []
while head:
result.append(head.value)
head = head.next
return result
original = create_linked_list([1, 2, 3, 4, 5])
reversed_head = reverse_linked_list(original)
print(linked_list_to_list(reversed_head)) # Output: [5, 4, 3, 2, 1]
Y2xhc3MgTGlzdE5vZGU6CiAgICAiIiJEZWZpbml0aW9uIGZvciBzaW5nbHktbGlua2VkIGxpc3Qgbm9kZS4iIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0wLCBuZXh0PU5vbmUpOgogICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQogICAgICAgIHNlbGYubmV4dCA9IG5leHQKCmRlZiByZXZlcnNlX2xpbmtlZF9saXN0KGhlYWQpOgogICAgIiIiCiAgICBSZXZlcnNlcyBhIHNpbmdseSBsaW5rZWQgbGlzdC4KCiAgICBBcmdzOgogICAgICAgIGhlYWQgKExpc3ROb2RlKTogVGhlIGhlYWQgb2YgdGhlIGxpbmtlZCBsaXN0LgoKICAgIFJldHVybnM6CiAgICAgICAgTGlzdE5vZGU6IFRoZSBuZXcgaGVhZCBvZiB0aGUgcmV2ZXJzZWQgbGlzdC4KICAgICIiIgogICAgcHJldiA9IE5vbmUKICAgIGN1cnJlbnQgPSBoZWFkCgogICAgd2hpbGUgY3VycmVudDoKICAgICAgICBuZXh0X25vZGUgPSBjdXJyZW50Lm5leHQgICMgc3RvcmUgbmV4dCBub2RlCiAgICAgICAgY3VycmVudC5uZXh0ID0gcHJldiAgICAgICAjIHJldmVyc2UgdGhlIGxpbmsKICAgICAgICBwcmV2ID0gY3VycmVudCAgICAgICAgICAgICMgbW92ZSBwcmV2IGZvcndhcmQKICAgICAgICBjdXJyZW50ID0gbmV4dF9ub2RlICAgICAgICMgbW92ZSBjdXJyZW50IGZvcndhcmQKCiAgICByZXR1cm4gcHJldgoKIyBIZWxwZXIgdG8gY3JlYXRlIGEgbGlua2VkIGxpc3QgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzCmRlZiBjcmVhdGVfbGlua2VkX2xpc3QodmFsdWVzKToKICAgIGlmIG5vdCB2YWx1ZXM6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGhlYWQgPSBMaXN0Tm9kZSh2YWx1ZXNbMF0pCiAgICBjdXJyZW50ID0gaGVhZAogICAgZm9yIHZhbCBpbiB2YWx1ZXNbMTpdOgogICAgICAgIGN1cnJlbnQubmV4dCA9IExpc3ROb2RlKHZhbCkKICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0CiAgICByZXR1cm4gaGVhZAoKIyBIZWxwZXIgdG8gY29udmVydCBsaW5rZWQgbGlzdCB0byBsaXN0IChmb3IgZGlzcGxheSkKZGVmIGxpbmtlZF9saXN0X3RvX2xpc3QoaGVhZCk6CiAgICByZXN1bHQgPSBbXQogICAgd2hpbGUgaGVhZDoKICAgICAgICByZXN1bHQuYXBwZW5kKGhlYWQudmFsdWUpCiAgICAgICAgaGVhZCA9IGhlYWQubmV4dAogICAgcmV0dXJuIHJlc3VsdAoKb3JpZ2luYWwgPSBjcmVhdGVfbGlua2VkX2xpc3QoWzEsIDIsIDMsIDQsIDVdKQpyZXZlcnNlZF9oZWFkID0gcmV2ZXJzZV9saW5rZWRfbGlzdChvcmlnaW5hbCkKcHJpbnQobGlua2VkX2xpc3RfdG9fbGlzdChyZXZlcnNlZF9oZWFkKSkgICMgT3V0cHV0OiBbNSwgNCwgMywgMiwgMV0=