Java多项式单链表问题

时间:2011-07-08 07:49:37

标签: java

我一直在努力研究链接列表实现,我以为我把它钉了,但由于某种原因,我无法解决如何在列表开头的列表中添加新节点。

这是一个多项式加法方法,其他一切都按预期工作,但此部分不能按预期工作。它返回多项式而没有任何变化......我想我错过了一些非常简单但却看不到的东西。

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;

    }

}

1 个答案:

答案 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;
}