题目描述:
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
思路:
对于要反转的结点B 链表A →B→C怎么变成 A ← B C呢
四步走!
①nextNode = CurrNode.next
记录B的next(即C)的地址,否则链表一旦断掉(B→A),没人指向C,就找不到C的地址了
②CurrNode.next = preNode
让B指向A
③preNode = CurrNode
这时候B成为C的前一个结点 准备被C指向
④CurrNode = nextNode
C成为CurrNode C的nextNode将会是D
附上代码:
# Definition for singly-linked list.
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
preNode = None
CurrNode = head
while CurrNode is not None:
# 存储当前结点的下一个结点
nextNode = CurrNode.next
# 列表反转
CurrNode.next = preNode
# 两个指针都向后移动
preNode = CurrNode
CurrNode = nextNode
return preNode