題目 206:「反轉 Linked List」 是一道常見的 LeetCode 基礎題目,目標是將一個單向 Linked List 的節點順序反轉。
題目:
給定一個 Linked List,反轉該 Linked List,並回傳新的頭節點。例如:
範例:
輸入:1 -> 2 -> 3 -> 4 -> 5 -> NULL
輸出:5 -> 4 -> 3 -> 2 -> 1 -> NULL
這題有兩種常見的解法:遞迴和迭代。
這邊使用迭代法來解,
實作:
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *curr = head;
ListNode *prev = nullptr;
while (curr != nullptr) {
ListNode* next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
// 此時 curr 是 nullptr
return prev;
}
};