@snuffles
2019-04-10T07:31:43.000000Z
字数 502
阅读 1070
链表
反转一个单链表
解:递归和迭代两种解法
迭代方法,在原来的链表前简历一个空的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;}
