LeetCode初级算法-链表-4

题目:合并两个有序链表

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

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

C语言解题:
解法一:

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
    struct ListNode newl;
    struct ListNode *node=&newl;
    while(l1!=NULL&&l2!=NULL)
    {
        if(l1->val<l2->val)
        {
            node->next=l1;
            node=node->next;
            l1=l1->next;
        }
        else
        {
            node->next=l2;
            node=node->next;
            l2=l2->next;
        }
    }
    if(l1!=NULL)
        node->next=l1;
    else
        node->next=l2;
    return newl.next;
}

解法二:

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

你可能感兴趣的:(C语言,LeetCode)