Merge Two Sorted Lists

class Solution {
 public:
     int listSize(ListNode* l){
         if(l==NULL) return 0;
         int len=1;
         ListNode* p=l;
         while (p->next)
         {
             p=p->next;
             ++len;
         }
         return len;
     }
     ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
         if(l1==NULL) 
             return l2;
         if(l2==NULL) 
             return l1;
         int len1=listSize(l1);int len2=listSize(l2);
         ListNode* p=l1;

         ListNode* result=(ListNode*)malloc(sizeof(ListNode));
         result->next=NULL;
         result->val=p->val;
         ListNode* q1=result;
         for (int i=1;i<len1;++i)
         {
             p=p->next;
             ListNode* s=(ListNode*)malloc(sizeof(ListNode));
             s->val=p->val;
             s->next=q1->next;
             q1->next=s;
             q1=q1->next;
         }

         ListNode* q=l2;
         for (int i=0;i<len2;++i)
         {
             int time=0;
             ListNode* curNode=result;
             ListNode* preNode=result;
             int temp=q->val;
             while(curNode!=NULL&&curNode->val<temp){
                 if(time!=0){
                     preNode=preNode->next;
                 }
                 curNode=curNode->next;
                 ++time;
             }
             if(time==0){
                 ListNode* newNode=(ListNode*)malloc(sizeof(ListNode));
                 newNode->val=temp;
                 newNode->next=result;
                 result=newNode;
                 q=q->next;
             }else{
                 ListNode* newNode=(ListNode*)malloc(sizeof(ListNode));
                 newNode->val=temp;
                 newNode->next=preNode->next;
                 preNode->next=newNode;
                 q=q->next;
             }
         }
         return result;
         
     }
 };
原文地址:https://www.cnblogs.com/fightformylife/p/4079138.html