java语言用链表实现多项式减法代码 运行结果总是不对!//多项式减法:Pa=Pa-Pb,利用两个多项式的结点构成“差多项式”,并返回LA\x09public PolynList subPolyn(PolynList LA,PolynList LB){\x09\x09Node ha=LA.getHead

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 19:58:49
java语言用链表实现多项式减法代码 运行结果总是不对!//多项式减法:Pa=Pa-Pb,利用两个多项式的结点构成“差多项式”,并返回LA\x09public PolynList subPolyn(PolynList LA,PolynList LB){\x09\x09Node ha=LA.getHead

java语言用链表实现多项式减法代码 运行结果总是不对!//多项式减法:Pa=Pa-Pb,利用两个多项式的结点构成“差多项式”,并返回LA\x09public PolynList subPolyn(PolynList LA,PolynList LB){\x09\x09Node ha=LA.getHead
java语言用链表实现多项式减法代码 运行结果总是不对!
//多项式减法:Pa=Pa-Pb,利用两个多项式的结点构成“差多项式”,并返回LA
\x09public PolynList subPolyn(PolynList LA,PolynList LB){
\x09\x09Node ha=LA.getHead(); //ha指向新形成链表的尾结点
\x09\x09Node qa=LA.getHead().getNext(); //qa指向LA中需要计算的当前项
\x09\x09Node qb=LB.getHead().getNext(); //qb指向LB中需要计算的当前项
\x09\x09
\x09\x09while(qa!=null&&qb!=null){ //qa和qb同时非空
\x09\x09\x09PolynNode a=(PolynNode)qa.getData();
\x09\x09\x09PolynNode b=(PolynNode)qb.getData();
\x09\x09\x09double b1=b.getCoef();
\x09\x09\x09double b2=0-b1;
\x09\x09\x09b.setCoef(b2);
\x09\x09\x09
\x09\x09\x09switch(cmp(a,b)){
\x09\x09\x09\x09case -1://多项式LA中当前结点的指数值小
\x09\x09\x09\x09\x09ha.setNext(qa);
\x09\x09\x09\x09\x09ha=qa;
\x09\x09\x09\x09\x09qa=qa.getNext();
\x09\x09\x09\x09\x09break;
\x09\x09\x09\x09\x09
\x09\x09\x09\x09case 0://两者的指数值相等
\x09\x09\x09\x09\x09double dif=a.getCoef() + b.getCoef(); //求系数的差
\x09\x09\x09\x09\x09if(dif!=0.0){ //修改多项式LA中当前结点的系数值
\x09\x09\x09\x09\x09\x09a.setCoef(dif);
\x09\x09\x09\x09\x09\x09ha.setNext(qa);
\x09\x09\x09\x09\x09\x09ha=qa;
\x09\x09\x09\x09\x09\x09qa=qa.getNext(); //指向下一结点
\x09\x09\x09\x09\x09\x09qb=qb.getNext();
\x09\x09\x09\x09\x09}
\x09\x09\x09\x09\x09else{ //删除多项式LA中的当前项
\x09\x09\x09\x09\x09\x09qa=qa.getNext(); //指向下一结点
\x09\x09\x09\x09\x09\x09qb=qb.getNext();
\x09\x09\x09\x09\x09}
\x09\x09\x09\x09\x09break;
\x09\x09\x09\x09\x09
\x09\x09\x09\x09case 1://多项式LB当前结点的指数值小
\x09\x09\x09\x09\x09ha.setNext(qb);
\x09\x09\x09\x09\x09ha=qb;
\x09\x09\x09\x09\x09qb=qb.getNext();
\x09\x09\x09\x09\x09break;
\x09\x09\x09}
\x09\x09}
\x09\x09ha.setNext(qa!=null?qa:qb); //插入剩余结点
\x09\x09return LA;
\x09}
减法运算如上,编译没问题,但是运行结果明显算的不对,请问哪里出错了呀?

java语言用链表实现多项式减法代码 运行结果总是不对!//多项式减法:Pa=Pa-Pb,利用两个多项式的结点构成“差多项式”,并返回LA\x09public PolynList subPolyn(PolynList LA,PolynList LB){\x09\x09Node ha=LA.getHead
对于多项式减法,不是很了解,不过 你先把b的coef设为负数,然后再进行比较,这样的比较结果还会正确吗?