将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 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%的用户
本文介绍如何使用C语言实现合并两个升序链表,并对合并后的链表进行冒泡排序。通过示例展示了合并过程,并对比了代码执行效率。
684

被折叠的 条评论
为什么被折叠?



