leetcode 反轉連結串列

superPerfect發表於2020-06-06

反轉一個單連結串列。

示例:

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


    // 將連結串列分為new和old兩個連結串列
    // curOld是old連結串列的頭指標
    // curNew是new連結串列的頭指標
    // 本質上講old連結串列的結點一個一個取出後,將取出的節點再重組成一個新連結串列
    ListNode* reverseList(ListNode* head) {
        ListNode* curOld = head;
        ListNode* curNew = NULL;
        ListNode* tmp = NULL;

        while(1) {
            if(curOld == NULL) {
                break;
            }            
            //old指標即將跳轉的下一個位置存起來
            tmp = curOld->next;  

            //old指標放入new連結串列的頭位置
            curOld->next = curNew; 
            curNew = curOld; 

            //old指標移位到下一個
            curOld = tmp;

        }

        return curNew;
    }

 



相關文章