/*struct ListNode { *
int val; *
struct ListNode *next; *
}; */
struct ListNode* mergetwolist(struct ListNode *alist,struct ListNode *blist)
{
if (alist==NULL)
{
return blist;
}
if (blist==NULL)
{
return alist;
}
if (alist->val <= blist->val)
{
alist->next = mergetwolist(alist->next,blist);
return alist;
}
else
{
blist->next = mergetwolist(alist, blist->next);
return blist;
}
}
struct ListNode* mergeKLists(struct ListNode** lists, int listsSize)
{
if(listsSize==0)
{
return 0;
}
struct ListNode *L=lists[0];
for (int i = 1; i < listsSize; i++)
{
L = mergetwolist(L, lists[i]);
}
return L;
}
递归合并两个链表(排序)