用代码写出实现两多项式相加的完整算法假定储存两多项式的带头节点的单链表HaHb已经建立好
void addPoly(PolyNode *Ha, PolyNode *Hb) {
PolyNode *pa = Ha->next, *pb = Hb->next, *pc = Ha;
while (pa && pb) {
if (pa->expn < pb->expn) {
pc->next = pa;
pc = pa;
pa = pa->next;
} else if (pa->expn > pb->expn) {
pc->next = pb;
pc = pb;
pb = pb->next;
} else {
float sum = pa->coef + pb->coef;
if (fabs(sum) > 1e-5) {
pa->coef = sum;
pc->next = pa;
pc = pa;
pa = pa->next;
PolyNode *tmp = pb;
pb = pb->next;
free(tmp);
} else {
PolyNode *tmp = pa;
pa = pa->next;
free(tmp);
tmp = pb;
pb = pb->next;
free(tmp);
}
}
}
if (pa) {
pc->next = pa;
} else {
pc->next = pb;
}
free(Hb);
}
原文地址: https://www.cveoy.top/t/topic/beGH 著作权归作者所有。请勿转载和采集!