反转链表(头插法实现)

简介: 反转链表(头插法实现)

今天带来一道面试中总爱出的题,反转链表,我们已经用栈实现过了,今天用快慢指针实现一下吧!!!


public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head==null){
            return null;
        }
        if(head.next==null){
            return head;
        }
        ListNode cur=head.next;//还是用到了快慢指针
        head.next=null;
        while(cur!=null){
            ListNode curNext=cur.next;
            cur.next=head;
            head=cur;
            cur=curNext;
        }
        return head;
    }
}

6b1b094a450e4755981dc5a95f54724b.png进行头插法,


就像图中写的代码 一样


head.next=null;
cur.next=head;
while(cur!=null){
ListNode  curNext=cur.next;
cur.hext=head;
head=cur;
cur=curNext;
}


运用了快慢指针,这就是套路,做的题多了就掌握了,勤加练习


今天的讲解就到这里了,我们下一期再见,886!!!!

相关文章
|
5月前
|
测试技术
1025 反转链表
1025 反转链表
头插法和尾插法
头插法和尾插法
|
6月前
单链表相关操作(头插法和尾插法)
单链表相关操作(头插法和尾插法)
57 4
|
6月前
|
算法
链表的头插法和尾插法
链表的头插法和尾插法
224 1
反转链表II
链表这部分的题,不少都离不开单链表的反转,参考:反转一个单链表 这道题加上哨兵位的话会简单很多,如果不加的话,还需要分情况一下,像是从头节点开始反转还是头节点以后开始反转,有了哨兵位后就只有一种情况了。 malloc一个哨兵位,next指向head,遍历两次,一次找起点,,开始节点的前一个节点保存下来,为了连接reverse返回的节点地址;一次找结束,结束的节点next节点保存下来,并使该节点的next指针置空,剩下的就是连接的问题,比较简单。
47 0
|
6月前
链表反转问题
链表反转问题
43 0
|
6月前
|
C++ 索引
反转链表(C++)
反转链表(C++)
33 0
|
存储
链表之反转链表专题
链表之反转链表专题
48 0
|
测试技术
「日更刷题」206. 反转链表
「日更刷题」206. 反转链表
88 0