迭代实现:
ListNode *reverseList(ListNode *head)
{
if (head == NULL || head->next == NULL)
return head;
ListNode *pCurr = head;
ListNode *pPrev = NULL;
ListNode *pNext = NULL;
while (pCurr != NULL)
{
pNext = pCurr->next; //save next node
pCurr->next = pPrev;
if (pNext == NULL)
head = pCurr;
pPrev = pCurr;
pCurr = pNext;
}
return head;
}递归实现:
ListNode *reverseList(ListNode *head)
{
if (head == NULL || head->next == NULL)
return head;
ListNode *p = head->next;
head->next = NULL;
ListNode *newhead = reverseList(p);
p->next = head;
return newhead;
}
本文介绍两种链表逆序的方法:迭代实现与递归实现。迭代实现通过三个指针pCurr、pPrev、pNext来逐个反转节点指向;递归实现则通过不断调用自身将子链表逆序后再连接头部节点。

2693

被折叠的 条评论
为什么被折叠?



