反转链表的问题,prev存储当前p的前一个结点,也就是反转之后当前p应该指向的结点,p1存储当前p的下一个结点,用于p的更新。反转时,核心语句为p.next=prev
,之后依次更新prev和p。当p为None时反转完毕,此时的prev就是新链表的头。
# 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:
if head is None or head.next is None:
return head
prev = None
p = head
while p is not None:
p1 = p.next
p.next = prev
prev = p
p = p1
return prev