链表倒置的过程看似比较复杂,
只要理解透彻其过程,其实还是蛮简单的。
这里具体的过程就不叙述了。
想要了解其实现机理,可以参考<剑指OFFER>,
其中有对链表倒置过程的详细分析。
源代码:
MyList.h
void Reverse(); // 逆转链表
MyList.cpp
void MyList::Reverse()
{
if (NULL == m_pHead || NULL == m_pHead->pNext)
return;
ListNode* pNewHead = NULL;
ListNode* pPrev = NULL;
ListNode* pCur = m_pHead;
ListNode* pNext = NULL;
while (pCur != NULL)
{
if (NULL == pCur->pNext)
pNewHead = pCur;
pNext = pCur->pNext;
pCur->pNext = pPrev;
pPrev = pCur;
pCur = pNext;
}
m_pHead = pNewHead;
}