- 类C描述
struct node
{
int expn;//指数
float coef;//系数
struct node *next;
};
typedef struct node *pointer;
- 多项式相加算法
void add(pointer pa,pointer pb,pointer &pc)
{//pa,pb,pc;三个多项式链表的头结点,pc=pa+pc
pointer p,q,rc,u;
float x;
p=pa->next;
q=pb->next;
pc=pa;
rc=pc;//新链表的头指针和尾指针
while(p && q)
{
//两多项式均未结束时,比较指数,将较小指数的结点链入新多项式链表
if(p->expn<q->expn)
{
rc->next=p;
rc=p;
p=p->next;
}
if(p->expn==q->expn)
{
x=p->coef+q->coef;
if(x!=0)
{
p->coef=x;
rc->next=p;
rc=p;
p=p->next;
}
else
{
u=p;
p=p->next;
delete u;
}
u=q;
q=q->next;
delete u;
}
if(p->expn>q->expn)
{
rc->next=q;rc=q;q=q->next;
}
}
if(p)
pc->next=p;
else
pc->next=q;
}