我还以为不能新创建节点,原来是可以的,那就很简单了,注意判断NULL就好
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode* p1,* p2,*p3,*l3;
p1=l1;
p2=l2;
if(p1==NULL)
return p2;
else if(p2==NULL)
return p1;
l3=(struct ListNode *)malloc(sizeof(struct ListNode));
p3=l3;
while(1)
{
if(p1->val<p2->val)
{
p3->val=p1->val;
p1=p1->next;
}
else
{
p3->val=p2->val;
p2=p2->next;
}
if(p1==NULL)
{
p3->next=p2;
break;
}
else if(p2==NULL)
{
p3->next=p1;
break;
}
p3->next=(struct ListNode *)malloc(sizeof(struct ListNode));
p3=p3->next;
p3->next=NULL;
}
return l3;
}