美文网首页
纯C手撕leetcode-基本数据结构-链表-链表两数相加

纯C手撕leetcode-基本数据结构-链表-链表两数相加

作者: 1哥 | 来源:发表于2022-03-15 00:03 被阅读0次

链表两数相加
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;
}

相关文章

网友评论

      本文标题:纯C手撕leetcode-基本数据结构-链表-链表两数相加

      本文链接:https://www.haomeiwen.com/subject/kfardrtx.html