原题地址:https://leetcode.com/problems/add-two-numbers/
用while循环把比较长的链表后面剩余部分新建内存给node可以,但是我想直接把node
的下一个结点直接连接到输入链表中比较长的那一个,不用新建内存去给输出结果,一
直输出错误;这点实在不明白为什么?可能是不能直接使用输入链表的内存返回吧?下
面是实现代码。
class Solution {
public:
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
while(!l1) return l2;
while(!l2) return l1;
ListNode *result=NULL,*temp=NULL,*node=NULL;
int in=0,tempadd=0;//进位与临时和
while(l1&&l2)//NULL&&NULL=NULL
{
tempadd=l1->val+l2->val+in;
temp=new ListNode(tempadd%10);
in=tempadd/10;
if(!result)
result=temp;
else
node->next=temp;
node=temp;
l1=l1->next;
l2=l2->next;
tempadd=0;
}
while (l1)
{
tempadd=l1->val+in;
temp = new ListNode(tempadd%10);
in = tempadd / 10;
node->next = temp;
node = temp;
l1 = l1->next;
}
while (l2)
{
tempadd=l2->val+in;
temp = new ListNode(tempadd%10);
in = tempadd / 10;
node->next = temp;
node = temp;
l2 = l2->next;
}
/*if(l1)
{
tempadd=l1->val+in;
l1->val=tempadd/10;
node->next=l1;
node=l1;
if(tempadd%10>0)
{
node->next->val+=tempadd%10;
}
return result;
}
if(l2)
{
tempadd=l2->val+in;
l2->val=tempadd/10;
node->next=l2;
node=l2;
if(tempadd%10>0)
{
node->next->val+=tempadd%10;
}
return result;
}*/
if (in)
{
temp = new ListNode(in);
node->next = temp;
}
return result;
}
};