大家好,欢迎来到《算法面试60讲(2026最新版·全真题带解析)》的第10篇内容!上一篇我们掌握了单链表、双链表的增删改查基础操作,本节课将聚焦链表专项的核心难点——链表反转和环判断,这两个考点是大厂面试中链表部分的“高频必考题”,无论是校招还是社招,几乎都会出现,且常结合真题变形考查。
很多同学在面对链表反转、环判断这类题目时,容易陷入“思路混乱、指针越写越乱”的困境,尤其是反转的递归实现、环入口查找等难点,常常出现逻辑漏洞。本节课将以“面试手撕”为核心,拆解每道真题的思路、代码实现、边界处理,同时总结高频考点和避坑技巧,帮你彻底吃透这两个核心难点,面试时能快速写出正确代码。
核心重点:链表反转(迭代+递归两种实现)、链表环判断(快慢指针法)、环入口查找、真题实战解析,全程结合面试场景,拒绝冗余,直击考点,所有代码可直接手撕复用。
一、链表反转(面试必考,两种核心实现)
链表反转是链表操作中最基础的难点,核心需求是“将链表的指针方向全部反转”,即原链表的头节点变为尾节点,原链表的尾节点变为头节点,所有节点的next指针指向其原来的前驱节点。面试中最常考两种实现方式:迭代法(推荐,易理解、无栈溢出风险)和递归法(考察递归思维,代码简洁)。
先明确前提:单链表节点定义(面试手撕第一步,沿用第9篇规范,无需重新定义,但需熟练默写):
// 单链表节点定义(面试手撕必写,简洁无冗余) class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val