美文网首页算法的不二法门
leetcode_add two numbers

leetcode_add two numbers

作者: CodeRambler | 来源:发表于2018-12-17 19:25 被阅读10次

    题目

    Add two numbers

    解题

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
        int carry = 0;
        struct ListNode * ans = (struct ListNode *) malloc(sizeof(struct ListNode));
        struct ListNode * q = (struct ListNode *) malloc(sizeof(struct ListNode)); // 移位指针
        ans->next = NULL; // 链表的最后一个节点为NULL,否则遍历的时候会出现野指针
        q = ans;
        
        while(l1 || l2 || carry)
        {
            struct ListNode * p = (struct ListNode *) malloc(sizeof(struct ListNode));
            p->val = ((l1 ? l1->val:0) + (l2 ? l2->val:0) + carry) % 10;
            carry = ((l1 ? l1->val:0) + (l2 ? l2->val:0) + carry) / 10;
            p->next = q->next;
            q->next = p;
            q = q->next;
            l1 = l1 ? l1->next : l1;
            l2 = l2 ? l2->next : l2;
        }
        ans = ans->next;
        return ans;
    }
    

    相关文章

      网友评论

        本文标题:leetcode_add two numbers

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