没通过自己写的代码:
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode* p=l1;
struct ListNode* q=l2;
struct ListNode* rear;
struct ListNode* c=(struct ListNode*)malloc(sizeof(struct ListNode));
c->next=NULL;
rear=c;
while(p!=NULL&&q!=NULL)
{
struct ListNode* s = (struct ListNode*)malloc(sizeof(struct ListNode));
if(p->val>=q->val)
{
s->val =q->val;
rear->next = s;
rear->next=s;
q=q->next;
}
else
{
s->val=p->val;
rear->next = s;
rear->next=s;
p=p->next;
}
}
while(p!=NULL)
{
rear->next=p;
}
while(q!=NULL)
{
rear->next=q;
}
return c;
}
修改后的代码:
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode* l3;
l3=(struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode* rear;
rear=l3;
struct ListNode* p=l1;
struct ListNode* q=l2;
if(l1==NULL)
return l2;
if(l2==NULL)
return l1;
while(p!=NULL&&q!=NULL)
{
if(p->val<=q->val)
{
rear->next=p;
rear=p;
p=p->next;
}
else
{
rear->next=q;
rear=q;
q=q->next;
}
}
if(p!=NULL)
{
rear->next=p;
}
if(q!=NULL)
{
rear->next=q;
}
return l3->next;
}