链接: 原文链接.
# 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:
#
cur, pre = head, None
# 当cur为空时,则表明已经遍历到了末尾
# 而他的前一个节点pre值为5,指向的是4,结果返回pre即可。
while cur:
# 大概思路就是
# 先用tmp来暂存cur的下一个节点
tmp = cur.next
# 之后就是修改cur的next指向,首次循环要指向为空
cur.next = pre
# 下一步是把cur赋值给pre,pre要当作cur的前一个结点
pre = cur
# 最后一步就是把tmp赋给cur,cur现在代表的是第二个节点
cur = tmp
return pre
ps:看题的时候脑子有些不太清楚,画了一个图。第一次循环是红色的部分,第二次是紫色的部分。