链表分组反转python_单链表的反转 python实现实例

单链表反转实现

1、递归实现

根据递归,递归到最后一个节点(条件为head3为非空,其下一个指向为空),将其next指向前一个结点,前一个结点的指向为None。

1270704-20181209185611484-578258599.png

1270704-20181209185728794-499580069.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值