单链表反转实现
1、递归实现
根据递归,递归到最后一个节点(条件为head3为非空,其下一个指向为空),将其next指向前一个结点,前一个结点的指向为None。
def recurse(head, newhead): #递归,head为原链表的头结点,newhead为反转后链表的头结点
if head isNone:return
if head.next isNone:
newhead=headelse:
newhead=recurse(head.next, newhead)
head.next.next=head
head.next=Nonereturn newhead
注释:原来链表为{1,2,3,4}
head指向为1,pHead1=head.next pHead2=pHead1.next pHead3=pHead2.next
a、递归最后实现newhead=phead3
b、回到上次递归的结束下方
2、循环实现
defReverseList(self, pHead):if pHead is None or pHead.next isNone:returnpHead
pre=None
cur=pHead
h=pHeadwhilecur:
h=cur
tmp=cur.next
cur.next=pre
pre=cur
cur=tmpreturn h