70,037
社区成员
发帖
与我相关
我的任务
分享polynomail Add_Polyn(polynomail &pa,polynomail &pb)
{
polynomail c,pc;
polynomail last_c; //加
pc = (polynomail)malloc(sizeof(LNode));
pc->next = NULL;
last_c=pc; //加
//错pa = pa->next;
//错pb = pb->next;
while(pa && pb)
{
if((pa->expn)==(pb->expn)) // 当pa与pb的第一项指数相等时
{
c = (polynomail)malloc(sizeof(LNode)); // 进行系数相加,并放到c中
c->expn = pa->expn;
c->coef = ((pa->coef)+(pb->coef));
pa = pa->next;
pb = pb->next;
} //if
else
if((pa->expn) > (pb->expn)) // 当对应的项pa的指数比pb的大时
{
c = (polynomail)malloc(sizeof(LNode)); // 把pb的指数放到c->expn中,同时,pb下移
c->expn = pb->expn;
c->coef = pb->coef;
pb = pb->next;
}//if
else
{
c = (polynomail)malloc(sizeof(LNode)); // 当对应的项pa的指数比pb的小时
c->expn = pa->expn; // 把pb的指数放到c->expn中,同时,pa下移
c->coef = pa->coef;
pa = pa->next;
} //if
last_c->next = c; //加
last_c = c; //加
last_c->next = NULL;//加
}//while
if(!pa && pb) // 当读到pa最后一个时,把pb剩下的放到c中
{
last_c->next=pb;
}
if(!pb && pa) // 当读到pb最后一个时,把pa剩下的放到c中
{
last_c->next=pa;
}
return pc;
}//AddPolyn