刷题记录-剑指offer24:反转链表

Posted tendermelon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题记录-剑指offer24:反转链表相关的知识,希望对你有一定的参考价值。

输入一个链表,反转链表后,输出新链表的表头。

法1:递归

public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head == null||head.next == null)
            return head;
        ListNode next = head.next;
        ListNode newHead = ReverseList(next);
        next.next = head;
        head.next = null;
        return newHead;
    }
}

递归的结束条件是遍历到原链表的尾节点,最重要的是next.next = head,实现链表反转

法2:头插法

public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head == null||head.next == null)
            return head;
        ListNode newList = new ListNode(-1);
        while(head!=null){
            ListNode next = head.next;
            head.next = newList.next;
            newList.next = head;
            head = next;
        }
        return newList.next;

    }
}

 

以上是关于刷题记录-剑指offer24:反转链表的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer系列刷题第二篇——从尾到头打印链表和反转链表

LeetCode刷题--点滴记录009

剑指 Offer 24. 反转链表

剑指Offer - 面试题24:反转链表

《剑指Offer——24. 反转链表》代码

剑指 Offer 24. 反转链表