思路:3个指针,后面两个指针控制改变链节的方向,最前面的指针用来前移。
void ReverseList(PNODE& pHead)
{
PNODE pRet = NULL;
PNODE pFirst = NULL;
PNODE pSecond = NULL;
PNODE pThird = NULL;
if (pHead == NULL || pHead->pNext == NULL)
{
goto Exit0;
}
pFirst = pHead->pNext->pNext;
pSecond = pHead->pNext;
while (pFirst != NULL)
{
pSecond->pNext = pThird;
pThird = pSecond;
pSecond = pFirst;
pFirst = pFirst->pNext;
}
pSecond->pNext = pThird;
pHead->pNext = pSecond;
Exit0:
return;
}
加头结点有什么好处?
答:操作一致性。想想在某个元素前插入一个新元素、或者想想删除某个元素。