该题为leetcode剑指offer24题,AC代码如下:
# 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:
prev = None
while head is not None:
nex = head.next #在改变当前帧的next之前,先取出后面的指针保存在nex
head.next = prev #逆置
prev = head #将prev往后移动一个,到当前指针
head = nex #将当前指针head往后移动一个,到nex
return prev
思路就是设定三个指针,一个prev,一个head(当前指针)还有一个nex下一指针。首先将prev设置为空可以等价于设置为head前面的指针,每次循环做的操作是将head指向prev,并在该操作之前先得到head后面的指针。随后把head和prev往后各移动一个就好。最后当head为空时,前面的prev就是最后的一个元素,而此时所有的next指向都是向前的。