天天看點

LeetCode 206.Reverse Linked List (反轉連結清單)

題目描述:

反轉一個單連結清單。

示例:

輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
           

AC C++ Solution:

從連結清單頭開始一次反轉一個節點

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* pre = NULL;
        while (head) {                          //從連結清單的開頭每次反轉一個節點
            ListNode* next = head -> next;
            head -> next = pre;                 //反轉
            pre = head;
            head = next;
        }
        return pre;
    }
};