leecode 206.反转链表

张开发
2026/6/3 11:53:43 15 分钟阅读
leecode 206.反转链表
方法迭代法分析要让它反转只要改变箭头指向即可cur:当前正在处理的节点初始化为head(头节点pre:cur的前一个节点初始为nulltmp:cur的后续节点临时存储不然可能会丢具体流程只要当前节点不为null就进入循环1.先用tmp存放当前节点的下一个节点后继元素2.让当前节点的下一个节点指向原来的前一个节点改变箭头方向3.更新pre为当前节点cur4.cur更新为临时存储的后继节点tmp(一直向后直至curnull结束循环记得返回pre此时的pre存放的是原链表中最后一个非空节点但链表的方向已经发生改变实现了链表的反转。代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val val; } * ListNode(int val, ListNode next) { this.val val; this.next next; } * } */ class Solution { public ListNode reverseList(ListNode head) { ListNode cur head,pre null; while(cur ! null){ ListNode tmp cur.next; cur.next pre; pre cur; cur tmp; } return pre; } }

更多文章