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.
Example:
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
第一次做有关链表题目,战战兢兢。
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
if(l1==NULL&&l2==NULL)
return l1;
else if(l1!=NULL&&l2==NULL)
return l1;
else if(l2!=NULL&&l1==NULL)
return l2;
ListNode *l=new ListNode(0);
if(l1->val<l2->val)
{
l->val=l1->val;
cout<<l1->val<<endl;
cout<<l->val<<endl;
l1=l1->next;
}
else
{
l->val=l2->val;
l2=l2->next;
}
ListNode *ll=l;
while(l1!=NULL&&l2!=NULL)
{
if(l1->val<l2->val)
{
ListNode *la=new ListNode(l1->val);
ll->next=la;
ll=la;
l1=l1->next;
}
else
{
ListNode *la=new ListNode(l2->val);
ll->next=la;
ll=la;
l2=l2->next;
}
}
while(l2!=NULL)
{
ListNode *la=new ListNode(l2->val);
ll->next=la;
ll=la;
l2=l2->next;
}
while(l1!=NULL)
{
ListNode *la=new ListNode(l1->val);
ll->next=la;
ll=la;
l1=l1->next;
}
return l;
}