python-反转链表
一、迭代实现
思路:
将链表的next节点存储起来 temp=cur.next
将链表的next指针指向前一个节点 cur.next=pre
将链表后移 pre=cur
cur=temp
最后调用头 return pre
def f(head:ListNode):
cur=head
pre=None
while cur:
temp=cur.next
cur.next=pre
pre=cur
cur=temp
return pre
二、递归实现
思路:
0-n的链表 k+1到n的链表已经反转,到k的节点,需要实现k的next节点指向k,即k.next.next=k
特殊情况 k为1的时候,指向None
def f(head:ListNode):
if head==None or head.next==None:
return head
p = f(head.next)
head.next.next=head
head.next=None
return p