简短的递归解法,面试必备!
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def create_list(arr):
pre = ListNode(0)
tmp = pre
for i in arr:
tmp.next = ListNode(i)
tmp = tmp.next
return pre.next
def print_list(head):
tmp = head
while tmp:
print(tmp.val, end=' ')
tmp = tmp.next
def reverse_list(head):
if head is None or head.next is None:
return head
else:
new_head = reverse_list(head.next) # 位置很重要,先处理后边的
head.next.next = head # 修复递归反转后的断裂链
head.next = None
return new_head
if __name__ == '__main__':
l = create_list([0, 1, 2, 3, 4, 5])
head = reverse_list(l)
print_list(head)