旅游网站的功能设计网络技术推广服务
在Python中实现链表的反转可以通过几种不同的方法。这里,我将向你展示如何使用迭代和递归两种方式来反转链表。
 1. 迭代方法
 迭代方法是通过遍历链表,逐个节点地改变其指向来实现反转的。
 class ListNode:
     def __init__(self, val=0, next=None):
         self.val = val
         self.next = next
def reverseList(head):
     prev = None
     current = head
     while current:
         next_node = current.next
         current.next = prev
         prev = current
         current = next_node
     return prev
# 示例使用
 # 创建链表 1 -> 2 -> 3 -> None
 head = ListNode(1, ListNode(2, ListNode(3)))
 # 反转链表
 reversed_head = reverseList(head)
 # 打印反转后的链表
 while reversed_head:
     print(reversed_head.val, end=" -> ")
     reversed_head = reversed_head.next
2. 递归方法
 递归方法是通过递归调用来反转链表,每次递归反转一个节点,直到链表的末尾。
 def reverseListRecursive(head):
     if not head or not head.next:
         return head
     new_head = reverseListRecursive(head.next)
     head.next.next = head
     head.next = None
     return new_head
# 示例使用
 # 创建链表 1 -> 2 -> 3 -> None
 head = ListNode(1, ListNode(2, ListNode(3)))
 # 反转链表
 reversed_head = reverseListRecursive(head)
 # 打印反转后的链表
 while reversed_head:
     print(reversed_head.val, end=" -> ")
     reversed_head = reversed_head.next
这两种方法都可以有效地反转链表,选择哪种方法取决于你的偏好和具体的应用场景。迭代方法通常更节省空间,因为它不需要额外的栈空间,而递归方法在代码上更为简洁,但需要注意递归深度的问题。
