// Definition for singly-linked list.
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
ListNode* tmp=NULL;
ListNode* result=NULL;
int nCarry=0;
while(l1!=NULL||l2!=NULL||nCarry!=0)
{
int nSum=((l1!=NULL)?l1->val:0)+((l2!=NULL)?l2->val:0)+nCarry;
nCarry=nSum/10;
ListNode *node=new ListNode(nSum%10);
if (tmp==NULL)
{
tmp=node;
result=tmp;
}
else
{
tmp->next=node;
tmp=tmp->next;
}
l1 = l1 == NULL ? NULL : l1->next;
l2 = l2 == NULL ? NULL : l2->next;
}
return result;
}
以上为最佳算法,其中 if (tmp==NULL)
{
tmp=node;
result=tmp;
}
else
{
tmp->next=node;
tmp=tmp->next;
}
还不算明白,记录下来,之后再看