可以使用辅助的head来执行头插法,具体思路就是维护原链表的cursor顺序,随后将当前cursor头插到head->next,然后cursor按照原来链表的顺序继续移动,循环迭代,直到cursor为NULL,则原链表所有节点都已经插入到新的head链表中,由于是头插法,直接返回head->next即可。

class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        auto head = new ListNode(0);
        auto cursor = pHead;
        auto temp = pHead;
        while(cursor!=NULL){
            temp = temp->next;
            cursor->next = head->next;
            head->next = cursor;
            cursor = temp;
        }
        return head->next;
    }
};