【杂记-自责贴】链表reverse写了半天

269 阅读1分钟

方法1:头插法,另请高明


class Solution {
    public ListNode reverseList(ListNode head) {
	    // 假头部
        ListNode fakeHead = new ListNode(-1000);
        // 不跟原来head了
        ListNode cur = head;
        while (cur != null) {
            ListNode temp = cur.next;
            cur.next = fakeHead.next;
            fakeHead.next = cur;
            cur = temp;
        }
        return fakeHead.next;
    }
}

方法2:直接动手


class Solution {
    public ListNode reverseList(ListNode head) {
        // 尾部肯定是空
        ListNode prev = null;
        ListNode cur = head;
        // 直接修改指针方向
        while (cur != null) {
            ListNode temp = cur.next;
            cur.next = prev;
            prev = cur;
            cur = temp;
        }
        return prev;
    }
}