利用栈先进后出的特性,先压栈,再弹栈,将最后一个弹出来的(也就是之前的链表头)的next赋值为null

import java.util.Stack;
public class Solution {
    public ListNode ReverseList(ListNode head) {
        Stack<ListNode> record = new Stack<ListNode>();
        ListNode pointer = head;

        if (head == null) {
            return null;
        }

        while (pointer != null) {
            record.push(pointer);
            pointer = pointer.next;
        }

        head = record.pop();
        pointer = head;

        while (!record.isEmpty()) {
            pointer.next = record.pop();
            pointer = pointer.next;
        }

        pointer.next = null;
        return head;
    }
}