ListNode* ListAdd(ListNode* l1ListNode* l2) {
        // write code here
        bool low_in = false;
        ListNode* target = nullptr,*now = nullptr;
        ListNode* new_l = new ListNode(0);
        target = new_l,now = new_l;

        int add1 = 0,add2 = 0,add3;

        while(l1||l2)
        {
            add1=l1?l1->val:0;
            add2=l2?l2->val:0;
            add3=low_in?add1+add2+1:add1+add2; 
            low_in = add3/10;
            ListNode* new_l = new ListNode(add3%10);
            now->next = new_l;
            now = new_l;
            l1=l1?l1->next:l1;
            l2=l2?l2->next:l2;      
        }

//最后进位产生高位1

        if(low_in)
        {
            ListNode* new_l = new ListNode(1);
            now->next = new_l;
        }

        return target->next;

    }

};