两个整数是用链表表示的,用类里边的构造函数来创建一个新链表和新节点,不用再去用malloc()。
注意进位,注意两个列表长度不一样的情况,还有计算到最后一个要把进位放到链表最后一个。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* l= new ListNode();
ListNode* m;
m = l;
ListNode* p;
ListNode* q;
p = l1;
q = l2;
int carry=0;
while (p!= NULL || q != NULL) {
int sum = 0;
ListNode* s = new ListNode();
m->next = s;
m = s;
if (p != NULL&&q!=NULL) {
sum = p->val +q->val+ carry;
p = p->next;
q = q->next;
}
else if (p != NULL&&q==NULL) {
sum = p->val + carry;
p = p->next;
}
else if (p == NULL && q != NULL) {
sum = q->val + carry;
q = q->next;
}
s->val = sum % 10;
carry = sum / 10;
}
if (carry != 0) {
m->next = new ListNode(1);
}
return l->next;
}
};