【数据结构】合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
在这里插入图片描述
在这里插入图片描述

Definition for singly-linked list.
  struct ListNode {
      int val;
      struct ListNode *next;
  };

 typedef struct ListNode ListNode;
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
     if(list1 ==NULL)
    {
        return list2;
    }
    if(list2==NULL)
    {
        return list1;
    }
    ListNode* l1=list1;
    ListNode* l2=list2;

    //创建新链表
    ListNode* listhead;
    ListNode* listtail;
    listhead=listtail=NULL;
   
    while(l1 && l2)
    {
        //l1大
        if(l1->val > l2->val)
        {
            //为空
            if(listhead==NULL)
            {
                listhead=listtail=l2;
            }else{
                //不为空 尾插
                listtail->next=l2;
                listtail=listtail->next;
            }
            l2=l2->next;
        }else{
            //l2大
            //为空
            if(listhead == NULL)
            {
                listhead=listtail=l1;
            }else{
                //不为空
                listtail->next=l1;
                listtail=listtail->next;
            }
            l1=l1->next;
        }
    }
    if(l1)
    {
        listtail->next=l1;
    }
    if(l2)
    {
        listtail->next=l2;
    }

    return listhead;
}

大框架就是把从小到大的依次放进新链表中。
先是判断一下如果链表1是空的话就直接返回链表2。如果链表2是空的话就直接返回链表1。然后创建新链表其实也可以先创建新链表在判断是否有空链表。

接下来就要比较了,用while循环判断条件是链表1和链表2(l1和l2)都不能为空。
在这里插入图片描述
在l1的值大于l2的值的情况下,因为是升序链表所以要先把小的放入链表中,如果新链表为空就把l2放入新链表中,如果新链表不为空就尾插。在l2大于l1的情况下,重复上面的步骤。注意在这之中不要忘了让节点的指针往后走。
在这里插入图片描述
像这种情况一个链表走完了,另一个链表还没有走完。我们就要判断了,如果l1不为空就把l1尾插,如果l2不为空就把l2尾插。

相关推荐

  1. 数据结构有序合并排序算法

    2024-04-30 10:36:02       46 阅读
  2. Leetcode:合并有序

    2024-04-30 10:36:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 10:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 10:36:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 10:36:02       82 阅读
  4. Python语言-面向对象

    2024-04-30 10:36:02       91 阅读

热门阅读

  1. 远程修改注册表的reg命令

    2024-04-30 10:36:02       31 阅读
  2. Python正则表达式

    2024-04-30 10:36:02       33 阅读
  3. c++day6

    c++day6

    2024-04-30 10:36:02      31 阅读
  4. spring-ioc

    2024-04-30 10:36:02       32 阅读
  5. 【蓝桥杯2024真题】好数

    2024-04-30 10:36:02       34 阅读
  6. 算法的时间复杂度和空间复杂度

    2024-04-30 10:36:02       32 阅读
  7. 无人机证书的含金量

    2024-04-30 10:36:02       28 阅读
  8. Spring MVC、Spring Boot和Spring Cloud 三者区别和联系

    2024-04-30 10:36:02       25 阅读
  9. 消息队列 RabbitMQ python实战

    2024-04-30 10:36:02       31 阅读