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

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        ListNode first = new ListNode(0);    //生成一个头结点
        ListNode p=head;        //引用p指向head
        ListNode q=null;        //引用q初始化为null
        while(p != null) {        //当引用p没有到达链表末尾
            q=p.next;            //q指向p的下一个节点
            p.next=first.next;    //用头插法逐个插入每个节点
            first.next=p;
            p=q;            //p指向下一个节点
        }
        return first.next;    //返回逆序的链表
    }
}