目录
题目
解法一:迭代
struct ListNode* reverse(struct ListNode* head)
{
struct ListNode* retHead = NULL;
while (head)
{
struct ListNode* nextNode = head->next;
head->next = retHead;
retHead = head;
head = nextNode;
}
return retHead;
}
struct ListNode* reverseList(struct ListNode* head)
{
return reverse(head);
}
解法二:递归
struct ListNode* reverse(struct ListNode* head)
{
if (!head || !head->next)
return head;
struct ListNode* retHead = reverse(head->next);
head->next->next = head;
head->next = NULL;
return retHead;
}
struct ListNode* reverseList(struct ListNode* head)
{
return reverse(head);
}