简短的递归解法,面试必备!
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)
本文介绍了一种使用递归实现链表逆序的方法。通过定义ListNode类来创建链表节点,并提供create_list、print_list和reverse_list等函数进行链表操作。reverse_list函数采用递归方式,当链表为空或只有一个元素时直接返回,否则先递归处理后续节点,再调整当前节点指向,完成逆序。
2万+

被折叠的 条评论
为什么被折叠?



