JZ15 反转链表

本文详细介绍了如何使用Python反转链表,通过设置临时变量和改变节点的next指针实现。首先检查链表是否为空或只有一个元素,然后遍历链表,将每个节点的next指针指向前一个节点,最后返回新的头节点。代码中特别注意了最后一个节点的处理,即返回pre而非cur,因为cur在最后会变为None。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

输入一个链表,反转链表后,输出新链表的表头。

想了半会没个好用的思路,试图理解讨论组的精华题解。

首先是遍历链表,把1的next置为None,2的next置为1,以此类推,5的next置为4。得到反转链表。需要考虑链表只有1个元素的情况。

class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        if pHead==None or pHead.next==None:
            return pHead
        pre = None
        cur = pHead
        while cur!=None:
            temp = cur.next
            cur.next = pre
            pre = cur
            cur = temp
        return pre

代码开始部分if语句的判断就是考虑到链表只有一个元素的情况,就返回头结点。

如果有一个以上的元素,跟着代码一步步走的话:

 

 最后输出pre而不是cur是因为最后一次迭代后cur已经指向None了,而pre是完整的反向链表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值