@snuffles
2019-04-10T07:31:43.000000Z
字数 502
阅读 853
链表
反转一个单链表
解:递归和迭代两种解法
迭代方法,在原来的链表前简历一个空的Newhead,从Head开始,将后一个节点转移到Newhead之后。重复操作指导head成为末尾节点为止。
递归解法:head指向倒数第二个节点,因为Head指向空或者是最后一个节点都直接返回,newhead指向head下一个节点调用递归函数返回的投节点。
//迭代
ListNode* reverseList(ListNode* head){
ListNode *newhead= head;
while(head){
ListNode * t = head->next;
head->next= newhead;
newhead=head;
head=t;
}
return newhead;
}
//递归
ListNode* reverseList(ListNode* head){
if(head == NULL || head->next ==NULL ) return head;
ListNode *newhead = reverseList(head->next);
head->next->next = head;
head->next =NULL;
return head;
}