【LeetCode】数据结构刷题(4)[合并连个有序的链表]

【LeetCode】数据结构刷题(4)[合并连个有序的链表]

所属专栏:玩转数据结构题型
博主首页:初阳785
代码托管:chuyang785
感谢大家的支持,您的点赞和关注是对我最大的支持!!!
博主也会更加的努力,创作出更优质的博文!!
关注我,关注我,关注我,重要的事情说三遍!!!!!!!!

1.题目来源

合并连个有序的链表

2.题目描述

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

在这里插入图片描述

3.解题思路

这里我们的大概思路是创建一个头节点head,然后比较两个链表节点的大小,小的为插到我们的新节点后面,然后依次往后遍历。同时我们创建一个tail节点来代替我们的head头节点遍历后面的链表,这样子的话我们就可以记录我们的头节点,到时候只要返回head就行了。
在这里插入图片描述
但是我们得先给我们的头节点附上一个节点,不然我们head和tail在一开始使用->的时候就报错了。在这里插入图片描述
这里就开始比较了,小的就尾插到我们创建的节点后面。
在这里插入图片描述在这里插入图片描述
这里当其中一个指向NULL后,我们直接吧另一个的节全部都指向我们创建的节点后面去。

4.代码展示

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2)
{
	//判断l1或者l2为NULL的情况
    if(l1==NULL)
        return l2;
    else if(l2==NULL)
        return l1;
    struct ListNode *head=NULL,*tail=NULL;
    //先给我们的头节点赋值一个节点
    if(l1->val < l2->val)
    {
        head=l1;
        tail=l1;
        l1=l1->next;
    }
    else
    {
        head=l2;
        tail=l2;
        l2=l2->next;
    }
	//比较,链接链表
    while(l1 && l2)
    {
        if(l1->val < l2->val)
        {
            tail->next=l1;
            tail=l1;
            l1=l1->next;
        }
        else
        {
            tail->next=l2;
            tail=l2;
            l2=l2->next;
        }
    }
    //判断谁先遍历完
    if(l1 == NULL)
    {
        tail->next=l2;
    }
    else
    {
        tail->next=l1;
    }
    return head;
}
  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三问走天下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值