题目
给你单链表的头节点,请你反转链表,并返回反转后的链表
解题
python
class ListNode:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
def 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 = head
head.next = None
return new_head
# 辅助函数:创建链表
def create_linked_list(elements):
if not elements:
return None
return ListNode(elements[0], create_linked_list(elements[1:]))
# 辅助函数:打印链表
def print_linked_list(head: ListNode):
current = head
while current:
print(current.value, end=" -> " if current.next else "\n")
current = current.next
# 测试代码
if __name__ == '__main__':
# 创建链表: 1 -> 2 -> 3 -> 4 -> 5
elements = [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