1. 程式人生 > >LeetCode 第二題答案 C++

LeetCode 第二題答案 C++

/**
 * 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) {
         ListNode *head = NULL, *p;
         int carry = 0, sum;
        
         while (l1 != NULL || l2 != NULL || carry != 0) {
         sum = 0;
         if (l1 != NULL) {
            sum += l1->val;
            l1 = l1->next;
         }
         if (l2 != NULL) {
           sum += l2->val;
           l2 = l2->next;
         }
          sum += carry;
          carry = sum / 10;
          sum %= 10; 
          ListNode *newNode = new ListNode(sum);
         if (head == NULL) {
          head = newNode;
          p = newNode;
         } else{
          p->next = newNode;   
          p = p->next;
        }
        }
       return head;
                
    }        
        
};