力扣 206. 反转链表

91 阅读1分钟

🔗 leetcode.cn/problems/re…

题目

  • 反转单链表

思路

  • 迭代

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if (head == nullptr || head->next == nullptr) return head;
        auto* curr = head->next;
        auto* pre = head;
        while (curr->next) {
            auto* next = curr->next;
            curr->next = pre;
            pre = curr;
            curr = next;
        }
        curr->next = pre;
        head->next = nullptr;
        return curr;
        
    }
};