//将链表节点摘下来挂在链表头部的解法。
class Solution {
public:
ListNode* ReverseList(ListNode* head) {
ListNode* p=new ListNode(-1);
if(head==nullptr || head->next==nullptr)
return head;//如果只有一个节点或没有节点
p->next=head;
ListNode* current=head->next;
ListNode*next=current->next;
while(current!=nullptr)
{
next=current->next;//缓存一下next节点
current->next=p->next;
p->next=current;//通过这两步把current插到头部。
current=next;//递进
}
head->next=nullptr;//head的next并不应该有后续,否则会形成环。
return p->next;
}
};

京公网安备 11010502036488号