2、Add Two Numbers

/**
 * 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* p1=l1;
        ListNode* p2=l2;
        ListNode* p=NULL;
        ListNode* result;
        int up=0;
        while(p1!=NULL && p2!=NULL){
            
            int value=p1->val+p2->val+up;
            int value1=value%10;
            up=value/10;
            ListNode* node=new ListNode(value1);
            if(p==NULL){
                p=node;
                result=p;
            }else{
                p->next=node;
                p=p->next;
            }
            p1=p1->next;
            p2=p2->next;
            
        }
        
        while(p1!=NULL){
             
            int value=p1->val+up;
            int value1=value%10;
            up=value/10;
            ListNode* node=new ListNode(value1);
             if(p==NULL){
                p=node;
                result=p;
            }else{
                p->next=node;
                p=p->next;
            }
            p1=p1->next;
            
        }
        
      while(p2!=NULL){
             
            int value=p2->val+up;
            int value1=value%10;
            up=value/10;
            ListNode* node=new ListNode(value1);
             if(p==NULL){
                p=node;
                result=p;
            }else{
                p->next=node;
                p=p->next;
            }
            p2=p2->next;
            
      }
      if(up!=0){
           ListNode* node=new ListNode(up);
           p->next=node;
      }
        
        return result;
            
        }
        
    
};

你可能感兴趣的:(2、Add Two Numbers)