可以使用辅助的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; } };