Reverse a singly linked list.
// method 1: 逐个节点逆转 public ListNode reverseList1(ListNode head) { if (head == null || head.next == null) return head; ListNode prev = head; ListNode curr = prev.next; prev.next = null; // miss this line will lead to daed loop when print the result list ListNode next; while (curr != null) { next = curr.next; curr.next = prev; prev = curr; curr = next; } return prev; } // method 2: 依次将后面节点提前 public ListNode reverseList(ListNode head) { if (head == null) return head; ListNode dummy = new ListNode(0); dummy.next = head; ListNode p = head; ListNode q = null; while (p.next != null) { q = p.next; p.next = q.next; q.next = dummy.next; dummy.next = q; } return dummy.next; }