合并两个有序链表-c语言

合并两个有序链表-c语言

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

示例 1:
合并两个有序链表-c语言_第1张图片

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]
解题代码如下:

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


struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
  struct ListNode  *p=(struct ListNode*)malloc(sizeof(struct ListNode));
  p->next=NULL;
   struct ListNode *s=p;
    while(list1&&list2){
        if(list1->val<=list2->val){
            p->next=list1;
             list1=list1->next;
            p=p->next;
           
        }
        else{
              p->next=list2;
            p=p->next;
            list2=list2->next;
        }

    }
    if(list1){
        p->next=list1;
    }
    if(list2){
         p->next=list2;
    }
    return s->next;


}

你可能感兴趣的:(力扣刷题,c++与c语言,链表,c语言,数据结构)