图解Java链表反转:迭代法详解

🎁个人主页:User_芊芊君子
🎉欢迎大家点赞👍评论📝收藏⭐文章
🔍系列专栏:Java.数据结构


【前言】
链表作为数据结构的基础,反转链表是面试和算法练习中的高频考点。力扣第206题“反转链表”看似简单,却藏着不少细节与巧思。本文将用图解+代码的形式,带你吃透迭代法反转链表的精髓,即使是算法新手也能轻松掌握~
文章目录:
- 一、反转链表
- 二、思路分析
- 三、代码展示
一、反转链表
反转链表顾名思义就是将链表反过来,这改变的是链表的结构

二、思路分析
步骤分析:
- 判断列表是否为空:如果是空,返回
null- 判断是不是只有一个节点:,如果只有一个节点,返回
head- 多个节点情况:从第二个节点开始,往head前面头插,一直循环,直到全部反转
多节点详解
- 先将第一个第一个节点的next置为null,因为反转完后,它变成最后一个节点。但直接置为null后,后面节点就找不到了,所以定义记录一下第二个节点,定义为cur(cur表示需要反转的节点)。
- 然后开始插入,让cur.next = head,这个时候会出现同样的问题,cur反转后,后面的节点又找不到了,所以还得记录一下下一个节点,定义为curN
- 然后让head = cur,cur = curN,只要cur不等于null,继续往下循环,直到cur为空,最后返回head

三、代码展示
class Solution {public ListNode reverseList(ListNode head) {//1.判断列表是不是空的if(head == null){return null;}//2.判断是不是只有一个节点if(head.next == null){return head;}//3.多个节点ListNode cur = head.next;head.next = null;while(cur != null){ListNode curN = cur.next;cur.next = head;head = cur;cur = curN;}return head;}
}
【总结】
递归法的关键是理解“当前节点的下一个节点,要反过来指向当前节点”,通过本文的图解和代码解析,相信你已经能轻松掌握迭代法反转链表的逻辑。

