欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 2025年- G19-Lc93-206.反向链接链表-java版

2025年- G19-Lc93-206.反向链接链表-java版

2025/5/3 6:32:16 来源:https://blog.csdn.net/zsysingapore/article/details/145839657  浏览:    关键词:2025年- G19-Lc93-206.反向链接链表-java版

1.题目描述

在这里插入图片描述
在这里插入图片描述
2.思路
思路一:
链表是一个典型的链表操作,通常可以通过迭代或递归来完成,而不是通过排序。
思路二:
在链表反转的过程中,prev 代表的是当前节点的前一个节点。它是一个用来帮助我们反转链表指针的辅助指针。
(1)prev 是用于存储当前节点的前一个节点,反转过程中不断向前移动。
(2)每一步,curr 节点的 next 指针都指向了 prev,反转了链表的方向。
(3)最终,prev 会指向新的头节点,即链表反转后的头节点。
在这里插入图片描述

在这里插入图片描述

3.java代码实现

/*** 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) {// 1.递归终止条件:当前节点为 null 或当前节点为最后一个节点{if(head==null||head.next==null){return;}// 2.递归反转链表的剩余部分ListNode newhead=reverseList(head.next);head.next.next=head;// 反转当前节点head.next=null;// 当前节点的 next 置为 nullreturn newHead;  // 返回反转后的头节点}}
}

方法二:

/*** 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) {//    // 1.递归终止条件:当前节点为 null 或当前节点为最后一个节点//    {//     if(head==null||head.next==null)//     {//         return head;//     }//     // 2.递归反转链表的剩余部分//     ListNode newhead=reverseList(head.next);//         head.next.next=head;// 反转当前节点//         head.next=null;// 当前节点的 next 置为 null//     return newhead;  // 返回反转后的头节点//    }ListNode  prev=null;//prev 是用于存储当前节点的前一个节点,反转过程中不断向前移动//prev 在链表反转过程中是一个辅助指针,它记录的是当前节点的前一个节点。//每一步,curr 节点的 next 指针都指向了 prev,反转了链表的方向。//最终,prev 会指向新的头节点,即链表反转后的头节点。ListNode  current=head;// curr 从 head 开始while(current!=null){ListNode temp=current.next;// 保存当前节点的下一个节点current.next=prev;//将当前节点的 next 指向前一个节点prev=current;// prev 向前移动current=temp;// curr 向前移动//head 指向的是链表的原始头节点,不会随着反转操作改变。
//curr 是链表反转过程中动态变化的指针,表示当前正在操作的节点,因此循环条件是 curr != null,直到遍历完整个链表。}// prev 是反转后的头节点return prev;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词