給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,而且它們的每一個節點只能存儲 一位 數字。code
若是,咱們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。it
您能夠假設除了數字 0 以外,這兩個數都不會以 0 開頭。io
示例:class
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
緣由:342 + 465 = 807List
來源:力扣(LeetCode)鏈表
/** * 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* cur=new ListNode(0); ListNode* pre=cur; int up=0; while(l1!=NULL||l2!=NULL) { int x=l1==NULL?0:l1->val; int y=l2==NULL?0:l2->val; int sum=x+y+up; up=sum>=10?1:0; sum=sum-up*10; cur->next=new ListNode(0); cur->next->val=sum; cur=cur->next; if(l1!=NULL) { l1=l1->next; } if(l2!=NULL) { l2=l2->next; } } if(up!=0) { cur->next=new ListNode(up); } return pre->next; } };