日期:2014-05-20  浏览次数:20748 次

java 用链式结构实现多项式相加问题
我用链表结构实现多项式相加出现问题。  polyAdd 这个函数(用于两个多项式相加) 貌似在不停循环 控制台没有显示任何结果 

我是多项式的指数和系数 做成一个结点 即ItemNode类。
声明两个二维数组:
                double [][]r1 = {{5,0},{3,2},{-6,3},{2,5}};
double [][]r2 = {{3,0},{4,1},{-2,2},{3,3},{-2,5},{9,6}};
说明:{5,0}  5 代表系数  0代表指数     同理其他。

我在网上查了资料,都是多加了一个List类,就是线性表类。,来实现相加。   那种方法我知道。   我就是想直接用ItemNode类 实现链式结构,就是这样:
        public class ItemNode{

double coef; //系数 
int exp;  //指数 
ItemNode next;  

ItemNode(){

}

ItemNode(double coef, int exp,ItemNode nt){
this.coef = coef;
this.exp = exp;
this.next = nt;
}
public ItemNode(ItemNode nt) {
this.next = nt;
}


下面是ItemNode类的部分方法。


//将一个ItemNode结点链接到head,形成链表  
public ItemNode add(ItemNode head, ItemNode n){
ItemNode p = head;
while(p.next != null){
p = p.next;
}
p.next = new ItemNode(n.coef, n.exp, null);
return head;
}

//多项式相加方法,就是这个有问题。 我测试了我的算法,如果我把外循环while改成if,就可以实现两个多项式第一个项的相加。   改成while本来应该可以让每个项相加,但是不行。 
public ItemNode polyAdd(ItemNode One, ItemNode Two){

ItemNode Three = new ItemNode(null);
ItemNode p = One.next, q = Two.next;

while(p!=null && q!=null){
if(p.exp < q.exp){

Three.add(Three, p);
p = p.next;

}else if(p.exp > q.exp){

Three.add(Three, q);
q = q.next;

}else
{
double y = p.coef + q.coef;
if(Math.abs(y) > 1.0E-6){
Three.add(Three, new ItemNode(y, p.exp, null));
p = p.next; q = q.next;
}
}
}
while(p != null){
Three.add(Three, p);
p = p.next;
}
while(q != null){
Three.add(Three, q);
q = q.next;
}
return Three;
}


我想知道我到底哪错了。。。我实在找不出来了。。
多项式相加 链式结构

------解决方案--------------------
把思路理清楚,一步一步找呗