leetcode 反轉鏈表

反轉一個單鏈表。

示例:

輸入: 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;
    }

 



Tags: