需要注意的点
- 一次只处理一个或者一对节点
- 给传入的指针备份
- 考虑好各种情况,比如空指针和只有一个节点的情况。
ListNode* reverseLinkedList(ListNode* pHead)
{
ListNode* pPrev = NULL;
ListNode* pNode = pHead;
ListNode* pNext = NULL;
while(pNode)
{
pNext = pNode->next;
pNode->next = pPrev;
pPrev = pNode;
pNode = pNext;
}
return pPrev;
}
递归的方法做
ListNode* reverseLinkedList(ListNode* pHead)
{
if (pHead == NULL || pHead->next == NULL)
{
return pHead;
}
else
{
ListNode* pNewHead = reverseLinkedList(pHead);
pNewHead->next = pHead;
pHead->next = NULL;
return pHead;
}
}
网友评论