剑指offer--15. 反转链表

题目:
输入一个链表,反转链表后,输出新链表的表头

思路:
把当前链表的下一个节点cur插入到哑结点dummy的下一个节点中,就地反转。

dummy->1->2->3->4->5的就地反转过程:

dummy->2->1->3->4->5
dummy->3->2->1->4->5
dummy->4>-3->2->1->5
dummy->5->4->3->2->1

public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head == null)
            return null;
        ListNode dummy = new ListNode(-1);
        dummy.next = head;
        ListNode prev = head;
        ListNode cur = head.next;
        while(cur != null){
            prev.next = cur.next; // 防止断链
            cur.next = dummy.next;
            dummy.next = cur;
            cur = prev.next;
        }
        return dummy.next;
    }
}

你可能感兴趣的:(剑指offer--15. 反转链表)