题目
给你单链表的头节点,请你反转链表,并返回反转后的链表
解题
class ListNode:def __init__(self, value=0, next=None):self.value = valueself.next = nextdef reverse_linked_list_recursive(head: ListNode) -> ListNode:# 空链表或单节点链表if not head or not head.next:return head# 递归反转子链表new_head = reverse_linked_list_recursive(head.next)# 处理当前节点head.next.next = headhead.next = Nonereturn new_head# 辅助函数:创建链表
def create_linked_list(elements):if not elements:return Nonereturn ListNode(elements[0], create_linked_list(elements[1:]))# 辅助函数:打印链表
def print_linked_list(head: ListNode):current = headwhile current:print(current.value, end=" -> " if current.next else "\n")current = current.next# 测试代码
if __name__ == '__main__':# 创建链表: 1 -> 2 -> 3 -> 4 -> 5elements = [1, 2, 3, 4, 5]head = create_linked_list(elements)print("原始链表:")print_linked_list(head)reversed_head = reverse_linked_list_recursive(head)print("反转后的链表:")print_linked_list(reversed_head)
原始链表:
1 -> 2 -> 3 -> 4 -> 5
反转后的链表:
5 -> 4 -> 3 -> 2 -> 1