struct ListNode* ReverseList(struct ListNode* pHead ) {
    struct ListNode* p = NULL;
    struct ListNode* q = pHead;
    struct ListNode* r;
    while(q != NULL){
        r = q->next;  //这一步必须在前面,以防止断链
        q->next = p;  //从旧链表拆一个结点下来指向新链表的链头结点
        p = q; //新链表的链头指针指向新插入的结点q
        q = r;  //指针返回旧链表,准备拆下一个结点
    }
    return p;   //p指向新链表的链头结点
}