【劍指offer】 反轉連結串列
阿新 • • 發佈:2018-11-10
輸入一個連結串列頭節點,反轉連結串列,並輸出反轉後的連結串列頭節點。
考慮從頭開始遍歷,每次記錄當前節點及前後三個位置的節點,然後將當前節點的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; }