21. Merge Two Sorted Lists (Easy)

来源:互联网 发布:dbaccess 执行sql 编码 编辑:程序博客网 时间:2024/05/17 07:08

Merge two sorted linked lists and return it as a new list. The new
list should be made by splicing together the nodes of the first two
lists.

Solution:

C:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {    if(!l1 && !l2) {        return NULL;    }    if(l1 && !l2) {        return l1;    }    if(!l1 && l2) {        return l2;    }    struct ListNode* p;    if(l1->val < l2->val) {        p = l1;        l1 = l1->next;    } else {        p = l2;        l2 = l2->next;    }    struct ListNode* list = p;    while(l1 && l2) {        if(l1->val < l2->val) {            p->next = l1;            p = l1;            l1 = l1->next;        } else {            p->next = l2;            p = l2;            l2 = l2->next;        }    }     if(l1) {        p->next = l1;    }    if(l2) {        p->next = l2;    }    return list;}
0 0