python3 图解反转列表 !!!绝对好理解

反转列表用python写的话很简单,但是总感觉不是很好理解,画图来一遍,加深理解 ~(小菜鸟的悲伤)

示例:

输入: 1->2->3->4->NULL

输出: 4->3->2->1->NULL

(ps: 画图技术不行,将就看看,不要嫌弃我呀~)

  初始链表长这样:

先定义一个空指针pre = None,干嘛呢?对,没错,就是让他记住前面断开的节点,万一丢了咋整?

next始终指向下一个要反转的节点,详细看图解~

 

反转第一个节点:next = head.next(next指向第二个节点,即节点2)

                                  head.next = pre(将第一个节点和第二个节点断开,指向空,即反转后的最后一个节点)

                                   

pre = head(让之前定义的那个空指针指向断开的节点1,先记住他,这样保证不会丢了节点)

head = next(让head也指向2节点),如图:

          到这里可以看到节点1 和节点2 已经断开,且节点1 指向空,为反转后的最后一个节点没错吧?

         继续,我们再来一次就看清楚了,反转第二个节点2

反转第二个节点:

                                  next = head.next(head目前指向第二个节点,即节点2,所以此时next指向节点3)

                                  head.next = pre(将第二个节点和第三个节点断开,且节点2指向节点1)

然后继续

pre = head(pre 指向节点2 ,这样Head就可以放心的移向下一个节点)

head = next(Head指向3)

       到这里,第二个节点也反转完成,后面的就一样的,不赘述啦~

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        pre = None
        while head:
            next = head.next
            head.next = pre
            pre = head
            head = next
        return pre

有问题欢迎留言~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值