JAVA版 头插法
分享头插法的解法。
比如有链表
原链表 1->2->3 head = 1;
反转后 3->2->1 root为新链表的头节点

分三步:
① 把原链表中的2 (head,next) 先放在新链表的头节点的前面 ,即 2 -> root //head.next = root;
② 把原链表的的head放在root的位置 即 由 2 -> root 变成2 -> 1 //root = head;
③ 让原链表的head指针往下走, //head = temp; temp是专门保存 原链表中下一个节点的临时节点。

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        if (head == null || head.next==null) return head;
        ListNode root= null;
        while(head != null){
            ListNode temp = head.next; //临时节点用来保存原链表中下一个节点。
            head.next = root; // ①
            root= head;//② 
            head = temp;//③

        }
        return root;
    }
}