Chinaunix首页 | 论坛 | 博客
  • 博客访问: 360450
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 1138
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 16:18
个人简介

最多140个字

文章分类

全部博文(60)

文章存档

2016年(1)

2015年(34)

2014年(25)

分类: C/C++

2015-08-12 16:32:47

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
  struct ListNode *merge(struct ListNode *l1, struct ListNode *l2)
 {
      struct ListNode *h=NULL;
     struct ListNode *t=NULL;
     if(l1==NULL)
        return l2;
     else if(l2==NULL)
        return l1;
     else
     {
        while((l1!=NULL)&&(l2!=NULL))
        {
            struct ListNode *tmp=NULL;
            if(l1->val>l2->val)
            {
                tmp=l2;
                l2=l2->next;
                tmp->next=NULL;
                
            }
            else
            {
                tmp=l1;
                l1=l1->next;
                tmp->next=NULL;
                
            }
            if(h==NULL)
            {
                 h=t=tmp;
            }
            else
            {
                 t->next=tmp;
                t=tmp;
            }
        }
        if(l1==NULL)
            t->next=l2;
        else if(l1!=NULL)
            t->next=l1;
        return h;
     }
 }
 struct ListNode* mergesort(struct ListNode **list, int l,int r)
 {
     if(l==r)
        return list[l];
    else if(l+1==r)
        return merge(list[l],list[r]);
    else
    {
        struct ListNode *lh=mergesort(list,l,(l+r)/2);
        struct ListNode *rh=mergesort(list,(l+r)/2+1,r);
        return merge(lh,rh);
    }
 }
 
struct ListNode* mergeKLists(struct ListNode** lists, int listsSize) {
    if(listsSize==0)
        return NULL;
    return mergesort(lists,0,listsSize-1);
}
阅读(2370) | 评论(0) | 转发(0) |
0

上一篇:Add Two Numbers

下一篇:core dump

给主人留下些什么吧!~~