链表反转:面试出现率最高的算法题,为什么

如果算法面试只能押一道链表题,十有八九是"反转链表"。它代码不过十行,却能把"指针走向"的功底考个底朝天。今天拆穿它为什么是试金石,以及如何一次写对。
"给你一个单链表的头,反转它。"——这大概是面试官最爱的一道题。它短到能写在名片上,却足够区分"背过"和"真懂"。
为什么是试金石?反转要求你同时操控 prev、cur、nxt 三个指针,且顺序一步都不能错:先存 nxt = cur.next(防断链)→ 再把 cur.next 翻向 prev → 然后 prev、cur 前移。哪怕顺序颠倒一步,链表就断或成环。能干净写出来,说明你对"指针即引用、改之前先保存"有肌肉记忆。
经典陷阱。许多人一上来就写 cur.next = prev,却忘了先保存 cur.next,下一轮就找不到后继了。还有递归写法:先反转后续子链,再把当前节点接到新尾——隐含的递推关系同样考验对链表的抽象。
它的变体家族。反转是"根题",由此长出一片题海:反转前 k 个、反转区间 [m,n]、K 个一组反转、判断回文(反转后半段比较)……今天我们把反转讲扎实,后面这一串都能举一反三。
图:迭代反转的核心——三指针每次前移,cur.next 翻向 prev
参考代码(Python)
反转的核心是 prev/cur/nxt 三指针,下面给出迭代实现。
def reverse_list(head):
prev=None; cur=head
while cur:
nxt=cur.next # 先保存,防断链
cur.next=prev # 翻向
prev=cur; cur=nxt # 前移
return prev
关联推荐
- 插入、选择、冒泡排序 — 排序里"近乎有序用插入"与反转都考验指针/顺序直觉
- 哈希表 — 面试另一道高频结构题
- 算法通关训练营·排序篇 — 系统刷题前的地基
评论 (0)
正文划词可点「问萝卜特」——自动发评论并由 AI 回复
加载评论中…