题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
class Solution { public: ListNode* ReverseList(ListNode* head) { // 1.如果头节点为空,或者只有1个节点,则无需排序 if ( head == nullptr || head->next == nullptr ) return head; // 2.新建标记节点 ListNode * p = head->next, * q = head->next; // 3.断开链表,一分为二 head->next = nullptr; while ( q != nullptr ) { p = q; // 需要修改的位置先跟上标志位 q = q->next; // 标志位后移 p->next = head; // 插入到最前面 head = p; // 更新最新头的位置 } return head; // 返回头 } };