1. 程式人生 > >【劍指offer】 反轉連結串列

【劍指offer】 反轉連結串列

輸入一個連結串列頭節點,反轉連結串列,並輸出反轉後的連結串列頭節點。


考慮從頭開始遍歷,每次記錄當前節點及前後三個位置的節點,然後將當前節點的next指向上一節點(完成當前的反轉),再移動到下一個節點操作。



最開始,將prior置為空,然後curr為頭節點。

首先,記錄下一個節點next

再將curr連至prior

再講prior更新到curr處,curr更新到next處

迴圈上述步驟直至curr為空(即操作到尾節點後,next為空,而curr更新到next,再進行即跳出迴圈了)

返回prior即可

    ListNode* ReverseList(ListNode* pHead) {
        if(pHead == nullptr)
            return nullptr;
        ListNode* pPrior = nullptr;
        ListNode* pCurr = pHead;
        ListNode* pNext;
        while(pCurr) {
            pNext = pCurr->next;
            pCurr->next = pPrior;
            pPrior = pCurr;
            pCurr = pNext;
        }
        return pPrior;
    }