大数加法-链表版
链式A+B
http://www.nowcoder.com/questionTerminal/ed85a09f0df047119e94fb3e5569855a
我在AC前写了一段迷惑代码。。。
- myReverse( ListNode * root )这个在本题是不需要的。。。呃呃呃,最终,下面的代码AC了
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} };*/ ListNode * myReverse( ListNode * root ) { ListNode * sentry=nullptr; while( nullptr!=root ) { ListNode * temp=root->next; root->next=sentry; sentry=root; root=temp; } return sentry; } class Plus { public: ListNode* plusAB(ListNode* a, ListNode* b) { // write code here int carry=0; ListNode * ret=new ListNode(-1); ListNode * temp=ret; while( nullptr!=a && nullptr!=b ) { int num=(a->val + b->val ); int initVal=( carry+num )%10; temp->next=new ListNode( initVal ); carry = (carry+num )/10; a=a->next; b=b->next; temp=temp->next; } while( nullptr!=a ) { int num=a->val; int initVal=( carry+num )%10; temp->next=new ListNode( initVal ); carry = (carry+num )/10; a=a->next; temp=temp->next; } while( nullptr!=b ) { int num=b->val; int initVal=( carry+num )%10; temp->next=new ListNode( initVal ); carry = (carry+num )/10; b=b->next; temp=temp->next; } //收尾巴 if( 0!=carry ) { temp->next=new ListNode( carry ); } temp=ret; ret=ret->next; delete( temp ); return ret; //return myReverse( ret ); } };