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;
}
我想知道我到底哪错了。。。我实在找不出来了。。
------解决方案--------------------把思路理清楚,一步一步找呗