递归翻转单链表
题目
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
TIPS:c/c++在leetcode上尽量不要用全局变量
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* revers(struct ListNode* head)
{
if (head->next == NULL)
{
return NULL;
}
struct ListNode* result = revers(head->next);
head->next->next = head;
if (result == NULL)
{
result = head->next;
}
head->next = NULL;
return result;
}
struct ListNode* reverseList(struct ListNode* head) {
if (head == NULL)
{
return NULL;
}
else if (head->next == NULL)
{
return head;
}
else
{
return revers(head);
}
}