diff --git "a/2224020152/\347\254\254\344\272\214\345\215\225\345\205\203/\345\256\236\347\216\260\344\270\244\344\270\252\345\244\232\351\241\271\345\274\217\347\233\270\344\271\230\347\232\204\350\277\220\347\256\227.cpp" "b/2224020152/\347\254\254\344\272\214\345\215\225\345\205\203/\345\256\236\347\216\260\344\270\244\344\270\252\345\244\232\351\241\271\345\274\217\347\233\270\344\271\230\347\232\204\350\277\220\347\256\227.cpp" new file mode 100644 index 0000000000000000000000000000000000000000..b506c29bef42bf8c947b5e507b41936f6af77a6a --- /dev/null +++ "b/2224020152/\347\254\254\344\272\214\345\215\225\345\205\203/\345\256\236\347\216\260\344\270\244\344\270\252\345\244\232\351\241\271\345\274\217\347\233\270\344\271\230\347\232\204\350\277\220\347\256\227.cpp" @@ -0,0 +1,42 @@ +Polynomial Mult(Polynomial P1,Polynomial P2){ + Polynomial P, Rear,t1,t2,t; + int c,e; + if(!P1||!P2)return NULL; + t1 = P1; t2 = P2; + P = (Polynomial)malloc(sizeof(struct PolyNode)); + P->link = NULL; + Rear = P; + while(t2){ + Attach(t1->coef*t2->coef,t1->expon+t2->expon,&Rear); + t2 = t2->link; + } + t1 = t1->link; + while(t1){ + t2 = P2;Rear = P; + while(t2){ + e = t1->expon+t2->expon; + c = t1->coef*t2->coef; + while(Rear->link&&Rear->link->expon>e) + Rear = Rear->link; + if(Rear->link&&Rear->link->expon==e){ + if(Rear->link->coef+c){ + Rear->link->coef+=c; + }else{ + t = Rear->link; + Rear->link=t->link; + free(t); + } + } + else{ + t=(Polynomial)malloc(sizeof(struct PolyNode)); + t->coef = c; t->expon = e; + t->link = Rear->link; + Rear->link = t; Rear = Rear->link; + } + t2 = t2->link; + } + t1 = t1->link; + } + t2 = P; P = P->link; free(t2); + return P; +}