/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

/**
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */
struct ListNode* ReverseList(struct ListNode* pHead ) {
    if(pHead->next==NULL||pHead==NULL){
        return pHead;
    }
    // write code here
    struct ListNode* l=pHead,*m=l->next,*r=m->next;//定义左,中,右三个节点
    m->next=l;
    l->next=NULL;//第一个节点指向的下一个节点为空,作为队尾
    while(r!=NULL){
        l=m;
        m=r;
        r=r->next;//三个节点各自向后移动一位
        m->next=l;//中间节点指向左节点
    }
    return m;//返回中间节点
}