合并有序链表---链表OJ---归并思想

https://leetcode.cn/problems/merge-two-sorted-lists/?envType=study-plan-v2&envId=top-100-liked

        将两个有序的链表合并为一个新的有序链表,那不就是和归并排序中最后合并的思想一样吗?只不过那里合并的是数组,这里合并的是链表。

        首先:如果有一个链表为空,那就直接返回另一个链表。

        同样,如果都为空,就返回NULL。

        同归并类似,如果合并过程中,有一个链表合并完成后,就将另一个链表的剩余部分全部接在最终链表的后面。

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
    if (list1 == NULL)
        return list2;
    if (list2 == NULL)
        return list1;

    struct ListNode* head; //创建头结点
    if (list1->val < list2->val) {
        head = list1;
        list1 = list1->next;
    } else {
        head = list2;
        list2 = list2->next;
    }
    struct ListNode* tmp = head; //用tmp来链接
    while (list1 && list2) {
        if (list1->val < list2->val) {
            tmp->next = list1;
            list1 = list1->next;
            tmp = tmp->next;
        } else {
            tmp->next = list2;
            list2 = list2->next;
            tmp = tmp->next;
        }
    }
    if (list1 == NULL) {
        tmp->next = list2;
    }
    if (list2 == NULL) {
        tmp->next = list1;
    }
    return head;
}

相关推荐

  1. 合并K个有序----OJ

    2024-01-29 23:36:02       38 阅读
  2. MergeTwoSortedLists 【合并有序

    2024-01-29 23:36:02       42 阅读
  3. C++合并K个有序

    2024-01-29 23:36:02       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-29 23:36:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-29 23:36:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-29 23:36:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-29 23:36:02       18 阅读

热门阅读

  1. 中国的文化是否是丛林文化?

    2024-01-29 23:36:02       39 阅读
  2. TS:子类型关系

    2024-01-29 23:36:02       31 阅读
  3. C#学习笔记_关键字ref、out

    2024-01-29 23:36:02       33 阅读