/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
  public:
    ListNode* ReverseList(ListNode* pHead) {
        ListNode* pReverseList = NULL;
        ListNode* pNode = pHead;
        ListNode* pPre = NULL;


        while (pNode != NULL) {
            ListNode* pNext = pNode->next;
            if (pNext == NULL) {
                pReverseList = pNode;
            }
            // 让当前的结点不指向下一个而指向上一个
            pNode->next = pPre;
            pPre = pNode;
            pNode = pNext;
        }
        return pReverseList;
    }
};