(LeetCode) 21. 合并两个有序链表

本文介绍如何使用C语言实现合并两个升序链表,并对合并后的链表进行冒泡排序。通过示例展示了合并过程,并对比了代码执行效率。

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

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

直接合并链表并且排序 :
 

void bubble_sort(struct ListNode *list1)//冒泡排序
{
     struct ListNode *p=NULL,*pr=NULL;
     int t;
     for(p=list1;p->next!=NULL;p=p->next)
     {
          for(pr=p->next;pr!=NULL;pr=pr->next)
          {
                if(p->val>=pr->val)
                { 
                    t=p->val;
                    p->val=pr->val;
                    pr->val=t;
                }
          }
     }
}

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
   
        struct ListNode *p=list1,*pr=list2;
        
        if(p==NULL && pr==NULL)//排除为空的可能
        {
             return p;
        }
        if(p!=NULL)//合并
        {  while(p->next!=NULL)
         {
             p=p->next;
         }
          p->next=pr;
          bubble_sort(list1);//排序
            return list1;
        } 
        else
        { while(pr->next!=NULL)
         {
             pr=pr->next;
         }
          pr->next=p;
          bubble_sort(list2);
          return list2;
        } 
}

执行用时:0 ms, 在所有 C 提交中击败了100.00%的用户

内存消耗:5.9 MB, 在所有 C 提交中击败了90.98%的用户

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值