C function to add Two-polynomials represented as Circular list with Header node
Program:-
NODE poly_add(NODE head1, NODE head2, NODE head3) { NODE a, b; int coeff; a = head1->link; b = head2->link; while (a != head1 && b != head2) { if (a->expon == b->expon) { coeff = a->coeff + b->coeff; if (coeff != 0) head3 = attach(coeff, a->expon, head3); a = a->link; b = b->link; } else if (a->expon > b->expon) { head3 = attach(a->coeff, a->expon, head3); a = a->link; } else { head3 = attach(b->coeff, b->expon, head3); b = b->link; } } while (a != head1) { head3 = attach(a->coeff, a->expon, head3); a = a->link; } while (b != head2) { head3 = attach(b->coeff, b->expon, head3); b = b->link; } return head3; }