21. Merge Two Sorted Lists

1. Non recursive solution.

 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        ListNode* phead=new ListNode(0);
        ListNode* node1=l1;
        ListNode* node2=l2;
        ListNode* node=phead;
        while(node1!=NULL || node2!=NULL)
        {
            if((node2==NULL&&node1!=NULL)||(node1&&node2&&(node1->val <= node2->val)))
             {
                node->next=node1;
                node1=node1->next;
                node=node->next;
                continue;
             }  
            if((node1==NULL&&node2!=NULL)||(node1&&node2&&(node1->val > node2->val)))
             {
                node->next=node2;
                node2=node2->next;
                node=node->next; 
             }  
        }
        node=phead->next;
        delete phead;
        return node;
    }

2. Recursive solution

 

 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
      
      if(l1==NULL)
        return l2;
      if(l2==NULL)
        return l1;
      
      ListNode* node=NULL;
      if(l1->val <= l2->val)
      {
         node = l1;
         node->next = mergeTwoLists(l1->next, l2);
      }
      else
      {
         node = l2;
         node->next = mergeTwoLists(l1, l2->next);
      }
      return node;
    }

 

posted @ 2018-02-12 16:24  SuperStar~  阅读(107)  评论(0)    收藏  举报