Add Two Numbers

主要还是要把各种情况分类清楚

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
if(l1 == NULL) return l2;
else if (l2 == NULL) return l1;
ListNode* p1 = l1;
ListNode* p2 = l2;
while(p1->next!=NULL || p2->next!=NULL) {
if(p1->next == NULL) {
p1->val += p2->val;
p1->next = p2->next;
if(p1->val > 9) {
p1->val -= 10;
while((++(p2->next->val)) > 9) {
p2->next->val -= 10;
p2 = p2->next;
if(p2->next == NULL) {
ListNode* q = new ListNode(1);
p2->next = q;
return l1;
}
else {
continue;
}
}
}
return l1;
}
p1->val += p2->val;
if(p1->val > 9) {
p1->val -= 10;
p1->next->val++;
}
if(p2->next == NULL) {
while(p1->next->val > 9) {
p1 = p1->next;
p1->val -= 10;
if(p1->next != NULL) {
p1->next->val++;
continue;
}
else {
ListNode* q = new ListNode(1);
p1->next = q;
return l1;
}
}
return l1;
}
p1 = p1->next;
p2 = p2->next;
}
p1->val += p2->val;
if(p1->val > 9) {
p1->val -= 10;
ListNode* q = new ListNode(1);
p1->next = q;
}
return l1;
}

posted @ 2016-04-13 16:05  李杨阳  阅读(138)  评论(0)    收藏  举报