1)
node* resver(node* pNode)
{
node* pPre = NULL;
node* pCurrent = pNode;
node* pNext = NULL;
while (pCurrent)
{
//先保存当前结点的下一结点
pNext = pCurrent->pNext;
pCurrent->pNext = pPre;
//将链表往前推一步
pPre = pCurrent;
pCurrent = pNext;
}
return pPre;
}
2)递归反转
//递归反转。思路是将链尾开始反转。原链表中当前结点的下一结点。
node* resvers(node* pNode, node* & header)
{
if (pNode == NULL || pNode->pNext == NULL)
{
header = pNode;
return pNode;
}
else
{
//pTempNext 为已经反转后的链尾结点。
node* pTempNext = resvers(pNode->pNext, header);
pNode->pNext = NULL;
//将当前结点添加到反转后的链尾
pTempNext->pNext = pNode;
//返回反转后的链尾。
return pNode;
}
}