7. Reverse Linked ListΒΆ

class ListNode:
    def __init__(self, x):
        self.value = x
        self.next = None

def reverse_link(head):
    if not head:
        return
    pre, nxt, curr = None, None, head

    while curr:
        nxt = curr.next
        curr.next = pre
        pre = curr
        curr = nxt
    return pre

def create_link(nums):
    dummy = ListNode(0)
    curr = dummy
    for i in nums:
        curr.next = ListNode(i)
        curr = curr.next
    return dummy.next

def print_link(head):
    curr = head
    while curr:
        print(curr.value)
        curr = curr.next

if __name__ == '__main__':
    head = create_link([1, 2, 5, 10, 4])
    head = reverse_link(head)
    print_link(head)