Add Two Numbers

nullptr指代指针字面量,在c++11中NULL被nullptr替代

思路:这里面需要注意头结点和头指针的使用,方便计算

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        //first note
        ListNode dummy(-1);
        int paNum, pbNum, sum;
        int carry = 0;
        //first pointer
        ListNode *prev = &dummy;
        for(ListNode *pa=l1, *pb=l2; pa != nullptr || pb != nullptr; pa = (pa == nullptr) ? nullptr:pa->next, pb = (pb == nullptr) ? nullptr:pb->next)
        {
            paNum = (pa == nullptr) ? 0:pa->val;
            pbNum = (pb == nullptr) ? 0:pb->val;
            sum = paNum + pbNum + carry;
            carry = sum / 10;
            prev->next = new ListNode(sum % 10);
            prev = prev->next;
        }
        
        if(carry > 0)
            prev->next = new ListNode(carry);
        return dummy.next;
    }
};

 

posted @ 2017-03-12 16:40  chengcy  Views(123)  Comments(0)    收藏  举报