通过代码:
typedef struct ListNode LNode;
typedef struct ListNode *LNode_Pointer;
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2)
{
int flag=false;
LNode_Pointer head1,head2,head3,tail1,tail2,tail1_prior,tail2_prior;
head1=l1;
head2=l2;
head3=(LNode_Pointer)malloc(sizeof(LNode));
head3->next=NULL;
LNode_Pointer head1_temp=(LNode_Pointer)malloc(sizeof(LNode));
head1_temp->next=head1;
LNode_Pointer head2_temp=(LNode_Pointer)malloc(sizeof(LNode));
head2_temp->next=head2;
while(head1_temp->next!=NULL&&head2_temp->next!=NULL)
{
tail1_prior=head1_temp;
tail1=head1;
tail2_prior=head2_temp;
tail2=head2;
while(tail1->next!=NULL)
{
tail1_prior=tail1;
tail1=tail1->next;
}
while(tail2->next!=NULL)
{
tail2_prior=tail2;
tail2=tail2->next;
}
LNode_Pointer q=(LNode_Pointer)malloc(sizeof(LNode));
if(flag==false)
{
if(tail1->val+tail2->val>=0&&tail1->val+tail2->val<10)
{
flag=false;
q->val=tail1->val+tail2->val;
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}
else
{
q->val=tail1->val+tail2->val-10;
flag=true;
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}
}
else
{
if(tail1->val+tail2->val>=0&&tail1->val+tail2->val<10)
{
flag=false;
q->val=tail1->val+tail2->val+1;
if(q->val>=10)
{
q->val=q->val-10;
flag=true;
}
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}
else
{
q->val=tail1->val+tail2->val-10+1;
flag=true;
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}
}
}
while(head1_temp->next!=NULL)
{
tail1_prior=head1_temp;
tail1=head1;
while(tail1->next!=NULL)
{
tail1_prior=tail1;
tail1=tail1->next;
}
LNode_Pointer q=(LNode_Pointer)malloc(sizeof(LNode));
if(flag==true)
{
q->val=tail1->val+1;
if(q->val==10)
{
q->val=q->val-10;
flag=true;
}
else
flag=false;
}
else
{
q->val=tail1->val;
}
q->next=head3->next;
head3->next=q;
tail1_prior->next=NULL;
free(tail1);
tail1=NULL;
}
while(head2_temp->next!=NULL)
{
tail2_prior=head2_temp;
tail2=head2;
while(tail2->next!=NULL)
{
tail2_prior=tail2;
tail2=tail2->next;
}
LNode_Pointer q=(LNode_Pointer)malloc(sizeof(LNode));
if(flag==true)
{
q->val=tail2->val+1;
if(q->val==10)
{
q->val=q->val-10;
flag=true;
}
else
flag=false;
}
else
{
q->val=tail2->val;
}
q->next=head3->next;
head3->next=q;
tail2_prior->next=NULL;
free(tail2);
tail2=NULL;
}
if(flag==true)
{
LNode_Pointer q=(LNode_Pointer)malloc(sizeof(LNode));
q->val=1;
q->next=head3->next;
head3->next=q;
}
return head3->next;
}
提交结果: