/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(pHead==NULL|| pHead->next==NULL)
        {
            return pHead;
        }
        ListNode *p=pHead,*q=pHead->next,*r=pHead->next;
        while(r!=NULL)
        {
            r=q->next;
            q->next=p;
            p=q;
            q=r;
        }
        pHead->next=NULL;
        return p;
    }
};