类似上图,其实步骤很简单,用三个指针pre,cur,temp,看英文也知道具体含义,前向,当前,和用于保存剩余的链表 ,具体看下图,很清晰
class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* pre=nullptr; ListNode* cur=head; while(cur!=nullptr){ ListNode *next=cur->next; cur->next=pre; pre=cur; cur=next; } return pre; } };
链表翻转存在的陷阱:编程高级陷阱-破坏原有生态