void process(int n) { while(n/2) { pushB(n % 2); n /= 2; } pushB(n%2); while((n=popB())!=-1) { if(to>=M) showError(4); c[to++] = n + '0'; } }
void List::getSum(List & val1, List & val2) { int d1, d2,carry = 0; //variables for the digits and the carry value Node *curr1; Node *curr2; curr1 = val1.tail; curr2 = val2.tail; while (curr1 != val1.tail->next || curr2 != val2.tail->next || carry != 0) { if (curr1 == val1.tail->next) d1 = 0; //set d1 value to 0 if the list ended else { d1 = curr1->digit; curr1 = curr1->prev; //used to move through the list } if (curr2 == val2.tail->next) d2 = 0; else { d2 = curr2->digit; curr2 = curr2->prev; } if (d1 + d2 + carry>= 10) { pushB(d1 + d2 - 10 + carry); //push the sum of the two digits + the value they carrided) carry = 1; } else { pushB(d1 + d2 + carry); carry = 0; } } }