循环遍历链表,用一个临时的变量保存下一个节点,并将当前节点用头插法插入到一个新的链表中,最后返回这个新的链表

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        ListNode* pNew = NULL;
        ListNode* p = pHead;
        while(p)
        {
            //当前节点为p,临时保存下一个节点;
            ListNode* tmp = p->next;

            //头插法插入到新的链表中;
            p->next = pNew;
            pNew = p;

            //到下一个节点;
            p = tmp;
        }
        return pNew;
    }
};