链表两数相加
https://leetcode-cn.com/problems/add-two-numbers/
思路类似于手算两数相加。
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
struct ListNode * dummy = malloc(sizeof(struct ListNode));
struct ListNode* tail = dummy;
struct ListNode* p1 = l1, *p2 = l2;
int carry = 0;
while(p1 || p2 || carry) {
int sum = 0;
sum += carry;
if (p1) {
sum += p1->val;
p1 = p1->next;
}
if (p2) {
sum += p2->val;
p2 = p2->next;
}
struct ListNode * new = malloc(sizeof(struct ListNode));
new->val = sum % 10;
tail->next = new;
tail = tail->next;
carry = sum / 10;
}
tail->next = NULL;
return dummy->next;
}
网友评论