NowCoder

解题思路

递归

  1. public ListNode ReverseList(ListNode head) {
  2. if (head == null || head.next == null)
  3. return head;
  4. ListNode next = head.next;
  5. head.next = null;
  6. ListNode newHead = ReverseList(next);
  7. next.next = head;
  8. return newHead;
  9. }

迭代

使用头插法。

  1. public ListNode ReverseList(ListNode head) {
  2. ListNode newList = new ListNode(-1);
  3. while (head != null) {
  4. ListNode next = head.next;
  5. head.next = newList.next;
  6. newList.next = head;
  7. head = next;
  8. }
  9. return newList.next;
  10. }