i have to make a class that will hold large numbers (all are going to be 0 or larger) and i got it all to work but the + operator
it has to use this linked list (i have the digits stored in reversed order so the number 123 is stored in the list 321... any ways i have been playing with this for some time now and dont really know where to go (i know the way i have it setup now it will only work if they are the same length but i will fix that later)
CODE
struct node
{
int digit;
node * next;
};
CODE
bigNumber bigNumber::operator + (const bigNumber & right) const
{
int temp,i,size;
bool add = false;
node * rWalker = right.root,
* walker = root;
char * answer;
if(this->length > right.length)
{
answer = new char[this->length];
size = this->length +2;
}
else
{
answer = new char[right.length];
size = right.length +2;
}
for(i=0; i<=size-1; i++)
{
if(walker != NULL && rWalker != NULL)
{
temp = walker->digit + rWalker->digit;
if(add && walker->next != NULL)
{
temp++;
add = false;
}
answer[i] = (temp/10?temp%10:temp) + 48;
add = (temp/10?true:false);
walker = walker->next;
rWalker = rWalker->next;
}
}
if(add)
{
answer[size+1] == '1';
answer[size+2] == '\0';
}
else
answer[size] = '\0';
return bigNumber(answer);
}