剑指 Offer 24. 反转链表 - 力扣(LeetCode) (leetcode-cn.com)

题目

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

  1. 输入: 1->2->3->4->5->NULL
  2. 输出: 5->4->3->2->1->NULL

限制:

  1. 0 <= 节点个数 <= 5000

初始代码

  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.next = None
  6. class Solution:
  7. def reverseList(self, head: ListNode) -> ListNode:

提交代码

  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.next = None
  6. class Solution:
  7. def reverseList(self, head: ListNode) -> ListNode:
  8. def recur(cur, pre):
  9. if not cur: return pre # 终止条件
  10. res = recur(cur.next, cur) # 递归后继节点
  11. cur.next = pre # 修改节点引用指向
  12. return res # 返回反转链表的头节点
  13. return recur(head, None) # 调用递归并返回

思路

剑指 Offer 24. 反转链表(迭代 / 递归,清晰图解) - 反转链表 - 力扣(LeetCode)
za0si1jf.bmp