struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
迭代法:
ListNode* ReverseIteratively(ListNode* pHead)
{
ListNode* pReverseHead = NULL;
ListNode* pNode = pHead;
ListNode* pPrev = NULL;
while(pNode != NULL)
{
ListNode* pNext = pNode->m_pNext;
if(pNext == NULL)
pReverseHead = pNode;
pNode->m_pNext = pPrev;
pPrev = pNode;
pNode = pNext;
}
}
递归法:
ListNode *ReverseRecursively(ListNode *head, ListNode *pre)
{
ListNode *p = head->next;
head->next = pre;
if(p)
return reverse(p, head);
else
return head;
}