polynomial::polynomial(Term t) { //initializes polynomial to Term specifications head->setCoe(t.getCoe()); head->exp = t.getExp(); head->next = NULL; }
polynomial polynomial::operator+ (polynomial &other) { polynomial result; //output vairable Term *polyIndex = head; //lhs variable Term *otherIndex = other.head; //rhs variable while (polyIndex != NULL && otherIndex != NULL) //while both polynomials exist { if (result.head->getExp() == 0 && result.head->getExp() == 0) //if the result is initialized and 'empty' { if (polyIndex->getExp() > otherIndex->getExp()) //lhs exponent > rhs exponent { result.head->setCoe(polyIndex->getCoe()); result.head->setExp(polyIndex->getExp()); polyIndex = polyIndex->next; } else if (polyIndex->getExp() == otherIndex->getExp()) //lhs exponent = rhs exponent { int buff = polyIndex->getCoe() + otherIndex->getCoe(); //add coefs int ffer = polyIndex->getExp(); result.head->setCoe(buff); result.head->setExp(ffer); polyIndex = polyIndex->next; otherIndex = otherIndex->next; } else //rhs exponent > lhs exponent { result.head->setCoe(otherIndex->getCoe()); result.head->setExp(otherIndex->getExp()); otherIndex = otherIndex->next; } } //one polynomial is empty and the other is not: if ((polyIndex != NULL && otherIndex != NULL) &&(polyIndex->getExp() > otherIndex->getExp())) { result.push_back(*polyIndex); polyIndex = polyIndex->next; } else if ((polyIndex != NULL && otherIndex != NULL) && (polyIndex->getExp() == otherIndex->getExp())) { int buff = polyIndex->getCoe() + otherIndex->getCoe(); int ffer = polyIndex->getExp(); Term dummy = Term(buff, ffer); result.push_back(dummy); polyIndex = polyIndex->next; otherIndex = otherIndex->next; } else if (polyIndex != NULL && otherIndex != NULL) { result.push_back(*otherIndex); otherIndex = otherIndex->next; } } while (polyIndex == NULL && otherIndex != NULL) { result.push_back(*otherIndex); otherIndex = otherIndex -> next; } while (polyIndex != NULL && otherIndex == NULL) { result.push_back(*polyIndex); polyIndex = polyIndex -> next; } return result; }