我在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 );
}
};