gpt4 book ai didi

Java多项式单链表问题

转载 作者:行者123 更新时间:2023-12-02 08:14:56 25 4
gpt4 key购买 nike

我一直在尝试实现一个链表实现,我以为我已经解决了,但由于某种原因,我无法弄清楚如何在列表开头向列表中添加新节点。

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

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;

}

}

最佳答案

在 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;
}

关于Java多项式单链表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6621509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com