本文共 1069 字,大约阅读时间需要 3 分钟。
You have two numbers represented by a linked list, where each node contains a single digit. The digits are stored in reverse order, such that the 1’s digit is at the head of the list. Write a function that adds the two numbers and returns the sum as a linked list. EXAMPLE Input: (3 -> 1 -> 5) + (5 -> 9 -> 2)Output: 8 -> 0 -> 8
Node* add_list(Node* n1,Node* n2){ if(n1==NULL) return n2; if(n2==NULL) return n1; Node* res,*before=NULL; int carry=0; while(n1&&n2){ int sum=n1->data+n2->data+carry; Node* nd=new Node; nd->data=sum%10; nd->next=NULL; carry=sum/10; if(before==NULL){ before=nd; res=nd; }else{ before->next=nd; before=before->next; } n1=n1->next; n2=n2->next; } Node* left=NULL; if(n1!=NULL) left=n1; if(n2!=NULL) left=n2; if(left==NULL){ if(carry!=0){ Node* nd=new Node; nd->data=carry; nd->next=NULL; before->next=nd; } return res; } while(left!=NULL){ int sum=left->data+carry; Node* nd=new Node; nd->data=sum%10; nd->next=NULL; carry=sum/10; before->next=nd; before=before->next; left=left->next; } return res;}
转载地址:http://bbyab.baihongyu.com/