网站模板预览,齐家网和土巴兔装修哪家好,WordPress降低搜索数据库,网站系统网站开发在Python中实现链表的反转可以通过几种不同的方法。这里#xff0c;我将向你展示如何使用迭代和递归两种方式来反转链表。 1. 迭代方法 迭代方法是通过遍历链表#xff0c;逐个节点地改变其指向来实现反转的。 class ListNode: def __init__(self, val0, nextNone): …在Python中实现链表的反转可以通过几种不同的方法。这里我将向你展示如何使用迭代和递归两种方式来反转链表。 1. 迭代方法 迭代方法是通过遍历链表逐个节点地改变其指向来实现反转的。 class ListNode: def __init__(self, val0, nextNone): 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
这两种方法都可以有效地反转链表选择哪种方法取决于你的偏好和具体的应用场景。迭代方法通常更节省空间因为它不需要额外的栈空间而递归方法在代码上更为简洁但需要注意递归深度的问题。