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

2022-03-15  本文已影响0人  1哥

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

猜你喜欢

热点阅读