leecode笔记-合并有序链表

链表-合并有序链表


将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
    
    
    if(l1==NULL)   //此判断用于解决有空列表的情况
    return l2;   
    if(l2==NULL)
    return l1;
      struct ListNode *head,*headindicator;
      if(l1->val >= l2->val){
    
       //此判断用于确定新列表的第一个结点
          head = l2;
          l2 = l2->next; 
      }
      else{
    
    
          head = l1;
          l1 = l1->next;
      }
      headindicator = head;  
      while(l1&&l2){
    
           //while循环用于排序
          if(l1->val <= l2->val){
    
    
             head->next = l1; 
             head = head->next;
             l1 = l1->next;
          }
          else{
    
    
              head->next = l2;
              head = head->next;
              l2 = l2->next;
          }

      }
          if(l1==NULL){
    
       //如果两个链表有一个提前结束了,就将另一个链表剩下的结点直接接到新链表的后面
              head->next = l2;
          }
          if(l2==NULL){
    
    
              head->next = l1;
          }
     return headindicator;

}

猜你喜欢

转载自blog.csdn.net/weixin_42595206/article/details/108247581