其他分享
首页 > 其他分享> > LeetCode21. 合并两个有序链表

LeetCode21. 合并两个有序链表

作者:互联网

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

合并有序链表输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

题解

遍历两个链表,如果链表a的数比链表b的数小则优先赋值到新链表中,最后判断下是不是全部赋值完毕,没有就接到新链表后

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
    struct ListNode *L=(struct ListNode *)malloc(sizeof(struct ListNode));
    struct ListNode *Head=L;
    while(l1&&l2){	//遍历结构体的元素
        if(l1->val<l2->val){
            Head->next=l1;
            l1=l1->next;
        }else{
            Head->next=l2;
            l2=l2->next;
        }
        Head=Head->next;
    }
   	//判断是否赋值完毕
    if(l1){
        Head->next=l1;
    }else{
        Head->next=l2;
    }
    return L->next;//将头节点的下一个真正链表元素的地址返回
}

标签:Head,ListNode,struct,next,链表,有序,l1,LeetCode21
来源: https://blog.csdn.net/weixin_44229867/article/details/120460532