### 说明:无环链表。这道题个人感觉只要思路清晰就可以做出来,重点是定义 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;
}
```