上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

21.合并两个有序链表

guduadmin12小时前

一、思路

二、源码


21.合并两个有序链表,第1张

一、思路

创建一个新链表

两个链表比较,小于等于取下来尾插

循环结束条件为任意一个链表为空

最后将之剩下的链表直接尾插

二、源码

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
    if(list1 == NULL)
        return list2;
    if(list2 == NULL)
        return list1;
    struct ListNode *head = NULL,*tail = NULL;
    while(list1 && list2)
    {
        if(list1->val <= list2->val)
        {
            if(head == NULL)
            {
                head = tail = list1;
            }
            else
            {
                tail->next = list1;
                tail = tail->next;
            }
            list1 = list1->next;
        }
        else
        {
            if(head == NULL)
            {
                head = tail = list2;
            }
            else
            {
                tail->next = list2;
                tail = tail->next;
            }
            list2 = list2->next;
        }
    }
    if(list1)
        tail->next = list1;
    if(list2)
        tail->next = list2;
    return head;
}

网友评论