早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一元多项式简单的计算器(数据结构C++).只求大神写下减法代码.我已经给出了加法代码,在此基础.voidaddPoly(Polynomial&A,Polynomial&B){//A和B为多项式A(x)和B(x)头指针//利用两个多项式结点构成

题目详情
一元多项式简单的计算器(数据结构C++).只求大神写下减法代码.我已经给出了加法代码,在此基础.
void addPoly( Polynomial &A,Polynomial &B)
{ //A和B为多项式A(x)和B(x)头指针
//利用两个多项式结点构成“和多项式”,其头指针仍然为A
Polynomial pa=A; //指针pa始终指向qa的前驱结点
Polynomial qa=A->link;
Polynomial pb=B; //指针pb始终指向qb的前驱结点
Polynomial qb=B->link;
Polynomial temp;
while(qa&&qb)
{
if(qa->expexp) //第一种情况
{
pa=qa;
qa=qa->link;
}
else if(qa->exp>qb->exp) //第二种情况,将结点qb插入到qa之前
{
temp=qb->link;
pa->link=qb;
qb->link=qa;
pa=qb;
qb=temp; //在多项式链表B中移走了一个结点到A
pb->link=qb;
}
else //第三种情况
{ //指数相同,则系数相加
qa->coef=qa->coef+qb->coef;
if(qa->coef==0) //系数为0.删除结点qa
{
pa->link=qa->link;
delete qa;
qa=pa->link;
}
else //系数不为0,作为结果项保留
{
pa=qa;
qa=qa->link;
}
pb->link=qb->link; //无论系数是否为0,都删除结点qb
delete qb;
qb=pb->link;
}
}
if(qb)
pa->link=qb; //将结点qb链接在表A的后面
delete B; //释放表B的头结点所占空间
}//addPoly
▼优质解答
答案和解析
有了加法,减法还用写吗?
直接把参数B中的所有项的系数变作相反数,然后按加法处理
多一步转换而已.