- 思路
先把两个链表补成一样的长度,再用递归方法 - 错误
注意函数里面用指针时也要提前在外面分配内存,不然LeetCode会报错
要记得新建结构体也要malloc
void add(struct ListNode* l1, struct ListNode* l2, int *count){
if(l1->next!=NULL && l2->next!=NULL)
add(l1->next, l2->next, count);
int sum = l1->val + l2->val + *count;
if(sum>=10){
*count = 1;
l1->val = sum%10;
}
else{
*count = 0;
l1->val = sum;
}
return;
}
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
struct ListNode *pa = l1;
struct ListNode *pb = l2;
while(pa->next!=NULL && pb->next!=NULL){
pa = pa->next;
pb = pb->next;
}
if(pa->next!=NULL){
while(pa->next!=NULL){
struct ListNode *p;
p = (struct ListNode*)malloc(sizeof(struct ListNode));
p->val = 0;
p->next = l2;
l2 = p;
pa = pa->next;
}
}
else if(pb->next!=NULL){
while(pb->next!=NULL){
struct ListNode *p;
p = (struct ListNode*)malloc(sizeof(struct ListNode));
p->val = 0;
p->next = l1;
l1 = p;
pb = pb->next;
}
}
int *count = (int *)malloc(sizeof(int));
*count = 0;
add(l1, l2, count);
if(*count==1){
struct ListNode *p;
p = (struct ListNode*)malloc(sizeof(struct ListNode));
p->val = 1;
p->next = l1;
l1 = p;
}
return l1;
}