1、结构体
struct PolyNode{
int coef;//指数
int expon;//系数
struct PolyNode *link;
};
typedef struct PolyNode *Polynomial;
Polynomal P1,P2;
2、操作
void Attach(int c,int e,Polynomial *pRear){
Polynomial P;
P=(Polynomial)mallco(sizeof(PolyNode));
P->coef=c;
P->expon=e;
P->link=NULL;
(*pRear)->link=P;
*pRear=P;
}
Polynomial PloyAdd(Polynomial P1,Polynomial P2){
Polynomial front,rear,tenp;
int sum;
rear=(Polynomial)mallco(sizeof(struct PolyNode));
front=rear;
while(P1&&P2){
switch(Compare(P1->expon,P2->expon)){
case 1:
Attach(P1->coef,P1->expon,&rear);
P1=P1->link;
break;
case -1:
Attach(P2->coef,P2->expon,&rear);
P2=P1->link;
break;
case 0:
sum=P1->coef+P2->coef;
if(sum){
Attach(sum,P1->expon,&rear);
P1=P1->link;
P2=P2->link;
break;
}
}
}
for(;P1;P1=P1->link){
Attach(P1->coef,P1->expon,&rear);
}
for(;P2;P2=P2->link){
Attach(P2->coef,P2->expon,&rear);
}
rear->link=NULL;
temp=front;
front=front->link;
free(temp);
return front;
}