- ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
- if(!l1){
- return NULL;
- }
- // ListNode *curr1=l1;
- // ListNode*next1= NULL;
- // ListNode*pre1 = NULL;
- // while(curr1){
- // next1 = curr1->next;
- // curr1->next = pre1;
- // pre1 = curr1;
- // curr1 = next1;
- // }
- // // get pre1 return pre;
- if(!l2){
- return NULL;
- }
- // ListNode *curr2=l2;
- // ListNode*next2= NULL;
- // ListNode*pre2 = NULL;
- // while(curr2){
- // next2 = curr2->next;
- // curr2->next = pre2;
- // pre2 = curr2;
- // curr2 = next2;
- // }
- //get pre2;
- ListNode*pre1 = l1;
- ListNode*pre2 = l2;
- ListNode * result = new ListNode(0);
- ListNode * sp = result;
- int tmp =0;
- while(pre1!=NULL || pre2 !=NULL){
- int k1;
- int k2;
- if(pre1==NULL){
- k1 =0;
- }else{
- k1 = pre1->val;
- }
- if(pre2==NULL){
- k2 =0;
- }else{
- k2 = pre2->val;
- }
- result->val = (tmp+k1+k2)%10;
- tmp = (tmp+k1+k2)/10;
- if((pre1!=NULL &&pre1->next!=NULL) || (pre2!=NULL &&pre2->next !=NULL)){
- result->next = new ListNode(0);
- }else{
- result->next = NULL;
- break;
- }
- result = result->next;
- if(pre1!=NULL && pre1->next !=NULL){
- pre1 = pre1->next;
- }else{
- pre1 = NULL;
- }
- if(pre2!=NULL && pre2->next !=NULL){
- pre2 = pre2->next;
- }else{
- pre2 =NULL;
- }
- }
- if(tmp>0){
- result->next = new ListNode(0);
- result = result->next;
- result->val = tmp;
- result->next =NULL;
- }
- return sp;
- }
- //该片段来自于http://www.codesnippet.cn/detail/2906201512969.html
来源: http://www.codesnippet.cn/detail/2906201512969.html