给定两个非空链表逆序存储的的非负整数,每个节点只存储一位数组。
请你把两个链表相加以下相同方法返回链表,保证两个数都不会以 0 开头。
数据范围:1≤n≤105 ,每个节点的值都满足0≤val≤9
示例1
输入:
{2,5,6},{5,6,1}
返回值:
{7,1,8}
struct ListNode* ListAdd(struct ListNode* l1, struct ListNode* l2 ) {
// write code here
int sum = 0;
int carry = 0;
int val1 = 0;
int val2 = 0;
struct ListNode* lResult = NULL;
struct ListNode* lReturn = NULL;
struct ListNode* lTemp = NULL;
while (l1 || l2 || carry == 1) {
val1 = (l1 == NULL ? 0 : l1->val);
val2 = (l2 == NULL ? 0 : l2->val);
sum = val1 + val2 + carry;
carry = sum / 10;
sum = sum % 10;
lTemp = (struct ListNode*)malloc(sizeof(struct ListNode));
lTemp->next = NULL;
lTemp->val = sum;
if (lResult == NULL) {
lResult = lTemp;
lReturn = lResult;
}
lResult->next = lTemp;
lResult = lResult->next;
l1 = (l1 == NULL)? NULL : l1->next;
l2 = (l2 == NULL)? NULL : l2->next;
}
return lReturn;
}



