原题链接
1.双指针反转
非迭代法的主要思想就是设置两个指针,指针每向前移动一下就反转一下
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
pre=None
cur=head
while cur:#当cur==Null时循环结束
tmp=cur.next#保存cur后的下一个结点
cur.next=pre
pre=cur
cur=tmp
return pre
2.递归法
这个递归法真的是不太好理解······
这个带图的讲解比较详细,这个大佬做的图是真的好
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if(head==None or head.next==None):#递归结束条件
return head
cur=self.reverseList(head.next)
head.next.next=head#使head 的下一个节点指向head
head.next=None
return cur