定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 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