• 利用三个对象来反转链表的步骤

    先用now保存当前头部
    再使用head指向本次反转的头部
    再将end(尾部)的下一位定位到下次反转的头部
    最后进行本次反转

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

        // 翻转
        ListNode end = head, now;
        while(end.next != null) {
            // 保存当前头部
            now = head;
            // 将head移动到本次反转后的头部位置
            head = end.next;
            // 将尾部的next定位到下次反转头部位置
            end.next = head.next;
            // 反转
            head.next = now;
        }
        return head;
    }
}
  • 还可以使用栈来进行反转