| operator = (const List<Type> &l) { MakeEmpty(); for (Node<Type> *p = l.first->link; p != NULL; p = p->link) LastInsert(p->data); } |
| List(const List<Type> &l) { first = current = last = new Node<Type>; prior = NULL; for (Node<Type> *p = l.first->link; p != NULL; p = p->link) LastInsert(p->data); } |
| friend Polynomial operator + (Polynomial &polyA, Polynomial &polyB) { Polynomial tempA = polyA;Polynomial tempB = polyB; PolyAdd(tempA, tempB); return tempA; } friend Polynomial operator * (Polynomial &polyA, Polynomial &polyB) { Node<Term> *pA = polyA.pGetFirst()->link; Node<Term> *pB = polyB.pGetFirst()->link; Polynomial polyTempA, polyTempB; int coef, exp; if (pA == NULL || pB == NULL) return polyTempA; for (pA = polyA.pGetFirst()->link; pA != NULL; pA = pA->link) { for(pB = polyB.pGetFirst()->link; pB != NULL; pB = pB->link) { coef = pA->data.coef * pB->data.coef; exp = pA->data.exp + pB->data.exp; Term term(coef, exp); polyTempB.LastInsert(term); } PolyAdd(polyTempA, polyTempB); polyTempB.Initialize(); } return polyTempA; } |