//存储结构
struct PolyNode{
int coef;//系数
int expon;//指数
PolyNode * next;//指针域
}
//多项式相乘
PolyNode* Multiply(PolyNode* L1,PolyNode* L2){
PolyNode *t1,*t2,*t,*rear,*L;
int c,e;
L=(PolyNode*)malloc(sizeof(PolyNode));
L->next=NULL;
t1=L1->next;
t2=L2->next;
rear=L;
if(!t1||!t2) return NULL;//其中一个多项式为空,则结果为空
while(t1){
while(t2){
c=t1->coef*t2->coef;
e=t1->expon+t2->expon;
while(rear->next&&rear->next->expon>e)//找到小于等于e的第一个结点
rear=rear->next;
if(rear->next&&rear->next->expon==e){
if(c+rear->next->coef!=0) rear->next->coef+=c;
else{
t=rear->next;
rear->next=t->next;
free(t);
}
}
else{
t=(PolyNode*)malloc(sizeof(PolyNode));
t->coef=c;
t->expon=e;
t->next=rear->next;
rear->next=t;
}
t2=t2->next;
rear=L;
}
t1=t1->next;
t2=L2->next;
}
return L;
}