链表逆置Python版本

该题为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指向都是向前的。

猜你喜欢

转载自blog.csdn.net/jackzhang11/article/details/108525730