2. Add Two Numbers

没有具体的算法,只是根据编译的运行错误不断的调试,调的我有点生气了,果断看看别人的思路。

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution
{
public:
ListNode* addTwoNumbers(ListNode*& l1, ListNode*& l2)
{
ListNode* sum;
ListNode* a, *b, *c;
a = l1;
int length1 = 0, length2 = 0;
while (a != NULL)
{
a = a->next;
length1++;
}
b = l2;
while (b != NULL)
{
b = b->next;
length2++;
}
sum = new ListNode(0);
c = sum;
a = l1;
b = l2;
if (length1 < length2)
{
int cc = 0;
while (b != NULL)
{
if (a != NULL)
{
if (a->val + b->val >= 10)
{
c->val = (a->val + b->val) % 10+cc;
cc = 1;
}
else
{
c->val = a->val + b->val + cc;
cc = 0;
}

ListNode* sum1 = new ListNode(0);
c->next = sum1;
c = c->next;

a = a->next;
b = b->next;
}
else
{
c->val = b->val + cc;
if (c->val==10&&b->next==NULL)
{
c->val = 0;
ListNode* sum1 = new ListNode(0);
c->next = sum1;
c = c->next;
c->val = 1;
}
if (b->next != NULL)
{
ListNode* sum1 = new ListNode(0);
c->next = sum1;
c = c->next;
}
b = b->next;
}


}
}
if (length1 > length2)
{
int cc = 0;
while (a != NULL)
{
if (b != NULL)
{
if (a->val + b->val >= 10)
{
c->val = (a->val + b->val) % 10;
cc = 1;
}
else
{
c->val = a->val + b->val + cc;
cc = 0;
}

ListNode* sum1 = new ListNode(0);
c->next = sum1;
c = c->next;

a = a->next;
b = b->next;
}
else
{
c->val = a->val+cc;
if (c->val == 10 && a->next == NULL)
{
c->val = 0;
ListNode* sum1 = new ListNode(0);
c->next = sum1;
c = c->next;
c->val = 1;
}
if (a->next!=NULL)
{
ListNode* sum1 = new ListNode(0);
c->next = sum1;
c = c->next;
}

a = a->next;
}


}
}
if (length1 == length2)
{
int bb = 0;
while (a != NULL)
{

if (a->val + b->val>=10)
{
c->val = (a->val + b->val) % 10;
bb = 1;
}
else
{
c->val = a->val + b->val+bb;
bb = 0;
}
if (a->next != NULL)
{
ListNode* sum1 = new ListNode(0);
c->next = sum1;
c = c->next;
}
if (a->next==NULL&&bb==1)
{
ListNode* sum1 = new ListNode(0);
c->next = sum1;
c->next->val = bb;
}


a = a->next;
b = b->next;


}
}

return sum;
}

};

原文地址:https://www.cnblogs.com/a-dreaming-dreamer/p/5740182.html