定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
题解:
取三个节点,用下图理解

# 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:
# 一共定义3个之间
# cur:指向当前的节点
# pre:指向上一个节点
# tmp: 指向下一个节点
pre = None
cur = head
while cur:
# 记录当前节点的下一个节点
tmp = cur.next
# 当前节点的下一个节点指向pre,这样就做到了反转
cur.next = pre
# pre移动到cur节点,cur节点移动到tmp节点的位置
pre, cur = cur, tmp
# print(pre)
return pre
本文详细解析了链表反转算法的实现过程,通过定义三个关键节点pre、cur和tmp,逐步将链表节点的next指针指向其前一个节点,最终实现链表的完全反转。文章提供了完整的Python代码示例,帮助读者深入理解算法原理。
204

被折叠的 条评论
为什么被折叠?



