/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
if (l1 == NULL && l2 == NULL) return NULL;
if (l1 == NULL) return l2;
else if (l2 == NULL) return l1;
struct ListNode* p = l1;
struct ListNode* q = l2;
int sum = 0;
while (p && q)
{
sum += p->val + q->val;
p->val = sum % 10;
sum = sum / 10;
if (p->next == NULL || q->next == NULL) break;
p = p->next;
q = q->next;
}
if (p->next == NULL && q->next == NULL)
{
if (sum != 0)
{
struct ListNode* r = (struct ListNode*)malloc(sizeof(p));
r->val = sum;
r->next = NULL;
p->next = r;
}
return l1;
}
if (p->next == NULL) p->next = q->next;
p = p->next;
while (p)
{
sum += p->val;
p->val = sum % 10;
sum = sum / 10;
if (p->next == NULL) break;
p = p->next;
}
if (sum != 0)
{
struct ListNode* r = (struct ListNode*)malloc(sizeof(p));
r->val = sum;
r->next = NULL;
p->next = r;
}
return l1;
}
2.Add Two Numbers
最新推荐文章于 2024-09-27 15:30:00 发布