题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
class Solution:
def ReverseList(self , head: ListNode) -> ListNode:
#处理空链表
if not head:
return None #空链表不需要反转,返回空 None
#链表的每一个元素都存储了下一个元素的地址
cur = head #定义一个当前元素指向下一个元素的地址
pre = None #定义一个上一个元素指向它的下一个元素的地址(初始为空)
while cur: #遍历整个链表,每到一个元素,断开当前元素指向下一个元素的地址,并用临时变量记录指向下一个元素的地址,然后当前元素带有的指向下一个元素的地址,改为指向上一个元素的地址,即可以将指针逆向
#断开链表,要记录当前元素指向的下一个元素,用来指向它的下一个元素的地址,临时变量记录该地址:
temp = cur.next
#上一个元素本来指向当前元素的地址 赋给 当前元素指向的下一个元素,用来指向它的下一个元素的地址:
cur.next = pre
#当前元素指向下一个元素的地址 赋给 上一个元素本来指向当前元素的地址
pre = cur
#当前元素指向下一个元素的地址 更新为 当前元素指向的下一个元素,用来指向它的下一个元素的地址:
cur = temp
return pre #更新