反转链表
Reverse Linked List
本机进度仅保存在当前浏览器
题目描述
给你单链表的头节点 head,请你反转链表,并返回反转后的链表。
示例:1 -> 2 -> 3 -> 4 -> 5 反转后为 5 -> 4 -> 3 -> 2 -> 1。
解题思路
- 迭代版用三个指针:prev(已反转部分的头)、curr(待处理节点)、next(暂存后继)。
- 每步先把 next 存下来,再让 curr 指回 prev,然后三个指针整体右移一格。
- 循环结束时 curr 为空,prev 即新头节点;全程只改指针域,空间 O(1)。
- 递归版先递归到尾部,回溯时让 head 的下一个节点指回 head,注意要把 head.next 置空防止成环。
参考实现
查看参考实现Python · 建议先自行作答
def reverseList(head):
# 迭代:逐个把节点头插到 prev 链上
prev = None
while head:
nxt = head.next
head.next = prev
prev = head
head = nxt
return prev