https://leetcode.cn/problems/reverse-linked-list/description/

<aside> 💡

常规解法:从头开始遍历,将每一个节点的next变为其上一个节点,注意交换顺序与边界处理即可

实现方法——双指针法:使用pre和cur两个指针(pre为cur的前一个节点),逐步将cur的next改为指向pre

</aside>

ListNode* reverseList(ListNode* head) {
    if (!head) {
        return head;
    }
    ListNode* cur = head;
    ListNode* pre = nullptr;
    ListNode* next = head->next;

    cur->next = pre;
    while (next) {
        pre = cur;
        cur = next;
        next = cur->next;
        cur->next = pre;
    }
    return cur;
}