我一直在努力研究链接列表实现,我以为我把它钉了,但由于某种原因,我无法解决如何在列表开头的列表中添加新节点。
这是一个多项式加法方法,其他一切都按预期工作,但此部分不能按预期工作。它返回多项式而没有任何变化......我想我错过了一些非常简单但却看不到的东西。
else if (power > polynomial.powerMax())
{
Polynomial newlink = new Polynomial(coefficient,power);
newlink.successor = polynomial;
polynomial = newlink;
}
整个方法
public class Polynomial
{
final static private int mantissa = 52;
final static private double epsilon = Math.pow(2.0, -mantissa);
private double coefficient = 0.0;
private int power = 0;
private Polynomial successor=null;
public Polynomial(double coefficient, int power)
{
if (Double.isNaN(coefficient)) return;
if (Math.abs(coefficient) < epsilon) return;
if (power<0) return;
this.coefficient=coefficient;
this.power=power;
}
public static void add(Polynomial polynomial, double coefficient, int power)
{
if (polynomial == null) return;
if (Math.abs(coefficient) < epsilon) coefficient = 0.0;
if (coefficient == 0.0) return;
if (power < 0) return;
if (power < polynomial.powerMin())
{
Polynomial newNode = new Polynomial(coefficient,power);
if (polynomial.successor != null)
{
while (polynomial.successor != null)
{
polynomial.successor = polynomial.successor.successor;
}
polynomial.successor = newNode;
}
else if (polynomial.successor == null )
polynomial.successor = newNode;
}
else if (power > polynomial.powerMax())
{
Polynomial newlink = new Polynomial(coefficient,power);
newlink.successor = polynomial;
polynomial = newlink;
}
else
{
if (power == polynomial.power)
polynomial.coefficient = polynomial.coefficient + coefficient;
}
}
答案 0 :(得分:2)
在Java中,变量的引用按值(link)传递。这意味着如果您为变量多项式分配任何新内容,它将不会在此方法之外产生任何影响。
String x = "Foo";
public void change (String s) {
s="Bar";
}
System.out.println(x);
change(x);
System.out.println(x);
将打印
Foo
Foo
您需要从add方法返回您创建的新多项式。
public static Polynomial add(Polynomial polynomial, double coefficient, int power) {
...
return polynomial;
}