//递归做法
struct ListNode* reverseList(struct ListNode* head) {
if(head==NULL||head->next==NULL)
{
return head;
}
struct ListNode* res=reverseList(head->next);
head->next->next=head;
head->next=NULL;
return res;
}
//普通做法
struct ListNode* reverseList(struct ListNode* head) {
//特殊情形
if(head==NULL||head->next==NULL)
{
return head;
}
//断开头结点
struct ListNode* p=head->next;
head->next=NULL;
//摘除结点进行头插
while(p!=NULL)
{
struct ListNode* s=p->next;
p->next=head;
head=p;
p=s;
}
//返回头结点
return head;
}
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]