问题:
# 给你单链表的头节点 head ,请你反转链表,
# 并返回反转后的链表。
方法:
1)双指针迭代法
def reverseList(self, head: ListNode) -> ListNode: # 双指针法,申请两个指针 prev = None curr = head while curr: next = curr.next # 存好下一个节点 curr.next = prev # 翻过来,前一节点变后节点 prev = curr # 更新前节点 curr = next # 更新现节点 return prev
2)递归法
def reverseList(self, head: ListNode) -> ListNode: # 迭代停止条件,当前节点为空或下一节点为空 if not head or not head.next: return head # 递归方式,在函数体内部改变节点方向 curr = self.reverseList(head.next) # head的下一个节点指向head head.next.next = head # 防止有环 head.next = None return curr