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

最多140个字

文章分类

全部博文(60)

文章存档

2016年(1)

2015年(34)

2014年(25)

分类: C/C++

2015-03-04 13:42:27

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
  1. /**
  2.  * Definition for singly-linked list.
  3.  * struct ListNode {
  4.  * int val;
  5.  * struct ListNode *next;
  6.  * };
  7.  */
struct ListNode* mergeTwoLists(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;
     }
}



  1. struct ListNode *mergeTwoLists(struct ListNode *l1, struct ListNode *l2) {
  2.     if(l1==NULL)
  3.         return l2;
  4.     else if(l2==NULL)
  5.         return l1;
  6.     struct ListNode *pNode=NULL;
  7.     if(l1->val>l2->val)
  8.     {
  9.         pNode=l2;
  10.         pNode->next=mergeTwoLists(l1,l2->next);
  11.     }
  12.     else
  13.     {
  14.         pNode=l1;
  15.         pNode->next=mergeTwoLists(l1->next,l2);
  16.     }
  17.     return pNode;
  18. }

阅读(1764) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~