#include <stdio.h>
#include <stdlib.h>
typedef struct Poly{
float coef;
int expn;
struct Poly *next;
}Term;
void InitTerm(Term *L){
L = (Term *)malloc(sizeof(Term));
L->next = NULL;
}
void CreateTerm(Term *L){
int n;
printf("请输入多项式项数:");
scanf("%d",&n);
printf("请输入倒序输入多项式的系数、指数:");
for(int i=n;i>0;--i){
Term *p = (Term *)malloc(sizeof(Term));
scanf("%f%d",&p->coef,&p->expn);
p->next = L->next;
L->next = p;
}
}
void MergeTerm(Term *La,Term *Lb,Term *Lc){
Term *pa = La->next;
Term *pb = Lb->next;
Term *pc = Lc;
while (pa&&pb) {
if(pa->expn < pb->expn){
pc->next = pa;
pc = pa;
pa = pa->next;
}
else if((pa->expn == pb->expn)&&(pa->coef+pb->coef!=0)){
pa->coef = pa->coef + pb->coef;
pc->next = pa;
pc = pa;
pa = pa->next;
pb = pb->next;
}
else if((pa->expn == pb->expn)&&(pa->coef+pb->coef==0)){
pa = pa->next;
pb = pb->next;
}
else if(pa->expn > pb->expn){
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa?pa:pb;
}
void printfPoly(Term *L){
Term *p;
p = L->next;
while(p){
printf("(%.2f %d)、 ",p->coef,p->expn);
p = p->next;
}
printf("\n");
}
int main(int argc, const char * argv[]) {
Term La,Lb,Lc;
InitTerm(&La);
InitTerm(&Lb);
InitTerm(&Lc);
CreateTerm(&La);
CreateTerm(&Lb);
MergeTerm(&La, &Lb, &Lc);
printf("合并后Lc的各项:");
printfPoly(&Lc);
}