解法一:迭代
class Solution:
# 迭代写法
def ReverseList(self , head: ListNode) -> ListNode:
# 初始化两个指针pre和next,分别用来前一个节点和当前节点
pre,next = None,None
while head:
# 当前节点指向
next = head.next
# 将当前节点指向改为指向前置节点
head.next = pre
# 将当前节点作为前置节点
pre = head
# 节点向后递归
head = next
# 反转链表后,pre节点是头节点
return pre
解法二:递归
class Solution:
# 递归写法
def ReverseList(self , head: ListNode) -> ListNode:
# 如果头节点为空或者头节点的下一个节点为空,则直接返回头节点
if head is None or head.next is None:
return head
# 递归地调用ReverseList方法,将头节点的下一个节点作为参数传入,得到反转后的链表的头节点ans
else:
ans