小视频代码,反转链表的实现思路分析

小视频代码,反转链表的实现思路分析

复制代码
//思路一:
//使用指针
public ListNode ReverseList(ListNode head) {
    if(head==null || head.next==null){
        return head;
    }

    ListNode pre=null;
    ListNode cur=head;

    while(cur!=null){
        ListNode next = cur.next;

        cur.next = pre;
        pre=cur;
        cur=next;
    }
    return pre;
}
复制代码
复制代码
//思路二:
//使用递归
public ListNode ReverseList(ListNode head) {
        if(head==null || head.next==null){
            return head;
        }

        //tail 是 head.next 链表反转后的最后一个结点 
        ListNode tail = head.next;
        
        //反转 head.next 链表
        ListNode next = ReverseList(head.next);
        
        head.next = null; //注意:十分重要:head.next 链表反转后,未反转的只有 head 一个结点
        tail.next = head;
        return next;
    }
复制代码

以上就是小视频代码,反转链表的实现思路分析, 更多内容欢迎关注之后的文章

posted @   云豹科技-苏凌霄  阅读(16)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示