21.合并两个有序链表

发布时间:2024年01月22日

一、思路

二、源码


一、思路

创建一个新链表

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

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

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

二、源码


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;
}

文章来源:https://blog.csdn.net/qq_51216031/article/details/135746032
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。