[关闭]
@snuffles 2019-04-10T15:31:43.000000Z 字数 502 阅读 807

L206 反转一个单链表

链表


反转一个单链表
解:递归和迭代两种解法
迭代方法,在原来的链表前简历一个空的Newhead,从Head开始,将后一个节点转移到Newhead之后。重复操作指导head成为末尾节点为止。
递归解法:head指向倒数第二个节点,因为Head指向空或者是最后一个节点都直接返回,newhead指向head下一个节点调用递归函数返回的投节点。

  1. //迭代
  2. ListNode* reverseList(ListNode* head){
  3. ListNode *newhead= head;
  4. while(head){
  5. ListNode * t = head->next;
  6. head->next= newhead;
  7. newhead=head;
  8. head=t;
  9. }
  10. return newhead;
  11. }
  12. //递归
  13. ListNode* reverseList(ListNode* head){
  14. if(head == NULL || head->next ==NULL ) return head;
  15. ListNode *newhead = reverseList(head->next);
  16. head->next->next = head;
  17. head->next =NULL;
  18. return head;
  19. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注