求高手帮帮忙:关于C++课程一道题

来源:百度知道 编辑:UC知道 时间:2024/06/04 17:05:03
已知一元多项式用不带结点的单向链表示,链结点构成如下
struct Node
{
float coef;
int expn;
nodeo*next;
};
已知头指针为HA和HB的两个一元多项式已按指数大到小链接,编出一个C++函数,实现两个一元多项式相减(HA-HB),
相减所得的新一元多项式是通过修改原HA链所得.操作完成后,原HB链所占用的空间撤消.函数原形如下:
void subpolyn(Node&HA,Node&HB);

void subpolyn(Node &HA, Node & HB)
{
Node *p, *q, *tail, *temp;
int cha;

p=HA->next;
q=HB->next;
tail=HA; //tail指向差多项式的尾结点
//////////////////////////////////////////////////////////

while(p!=NULL && q!=NULL)
{
if(p->expn <q->expn)//若p的指数小于q,将p结点加入到差多项式
{
tail->next=p;
tail=p;
p=p->next;
}

else if (p->expn ==q->expn)
{
cha=p->coef - q->coef;
if(sum!=0)
{
p->coef=cha;
tail->next=p;
tail=p;
p=p->next;
temp=q;
q=q->next;
free(temp);
}

else
{
temp=p; p=p->next; free(temp);
temp=q; q=q->next; free(temp);
}
}

esle //若q的指数小于p,将q结点加入到差多项式
{
tail->next=q;
tail=q;
q=q->next;
}