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);
}
用代码写出实现两多项式相加的完整算法假定储存两多项式的带头节点的单链表HaHb已经建立好

原文地址: https://www.cveoy.top/t/topic/beGH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录