【力扣 中等 C】2. 两数相加
目录
题目
解法一:迭代
解法二:递归
题目
待添加
解法一:迭代
struct ListNode* add(struct ListNode* head1, struct ListNode* head2)
{struct ListNode* virHead = malloc(sizeof(*virHead));struct ListNode* curNode = virHead;int carry = 0;struct ListNode* list1CurNode = head1;struct ListNode* list2CurNode = head2;while (list1CurNode || list2CurNode || carry){int val1 = list1CurNode ? list1CurNode->val : 0;int val2 = list2CurNode ? list2CurNode->val : 0;int sum = val1 + val2 + carry;carry = sum >= 10 ? 1 : 0;struct ListNode* newNode = malloc(sizeof(*newNode));newNode->val = sum % 10;newNode->next = NULL;curNode->next = newNode;curNode = newNode;list1CurNode = list1CurNode ? list1CurNode->next : list1CurNode;list2CurNode = list2CurNode ? list2CurNode->next : list2CurNode;}struct ListNode* retHead = virHead->next;free(virHead);return retHead;
}struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2)
{return add(l1, l2);
}