### 說明:無環鏈表。這道題個人感覺只要思路清晰就可以做出來,重點是定義 3 個指針,保存的內容為:前一個節點,當前要將m_next指向前一個節點的節點,后一個節點。不斷向前遍歷。注意點是第一個節點的 m_next 要指向空指針,頭指針要指向最后的那個節點。
```
SList* reverseList(SList *pHead)
{
SList *pReverseHead = nullptr; // 保存反轉后的頭節點
// 定義 3 個指針
SList *pPrev = nullptr, *pCur = pHead, *pNext = nullptr;
while (pCur != nullptr) {
// 保存下個節點到pNext中
pNext = pCur->m_next;
// 保存反轉后的頭節點
if (pNext == nullptr) {
pReverseHead = pCur;
}
// 設置當前節點的m_next
pCur->m_next = pPrev;
// 向前走
pPrev = pCur;
pCur = pNext;
}
// 返回鏈表頭
return pReverseHead;
}
```