struct poly
{ int coef;//多项式系数
int exp;//多项式指数
struct poly *next;//指到下一项的指针
}
struct poly *add_poly(struct poly *pa ,struct poly *pb)
{
int x;//用于存放相同次数项的系数和
struct poly *p,*q,*r;
p=pa->next;q=pb->next;
r=pa;pc=pa;
while((p!=NULL)&&(q!=NULL))
{
if(p->exp==q->exp)//如果指数相等,即相同次数,系数则相加
{x=p->coef+q->coef;
if(x!=0) //如果系数的和不为零则存放到和多项式中
{p->coef=x;r->next=p;r=p;}
p++;q++;//移动到下一项
}//if
else if(p->exp>q->exp)//如果次数不等,则直接把次数小的系数存放到和多项式中
{r->next=p;r=p;p++;}
else{r->next=q;r=q;q++;}
}//while end
if(p==NULL)r->next=q;//如果一个多项式已经插完到和多项式中,则把未插完多项式的剩余项直接插入到和多项式中
else r->next=p;
retrn(pc);
}//add_poly end