Java多项式单链表问题
我一直在尝试一个链表实现,我想我已经搞定了,但由于某些原因,我无法解决如何在列表的开头向列表中添加一个新节点 这是一个多项式加法,其他一切都按预期工作,但本节的工作并没有按预期进行。它返回多项式,没有变化。。。我想我错过了一些非常简单但看不见的东西Java多项式单链表问题,java,Java,我一直在尝试一个链表实现,我想我已经搞定了,但由于某些原因,我无法解决如何在列表的开头向列表中添加一个新节点 这是一个多项式加法,其他一切都按预期工作,但本节的工作并没有按预期进行。它返回多项式,没有变化。。。我想我错过了一些非常简单但看不见的东西 else if (power > polynomial.powerMax()) { Polynomial newlink = new Polynomial(coefficient,power); newlink.success
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;
}
}
公共类多项式
{
最终静态私有整数尾数=52;
最终静态私有双ε=Math.pow(2.0,-尾数);
私人双系数=0.0;
私有整数幂=0;
私有多项式后继者=null;
公共多项式(双系数,整数次幂)
{
if(Double.isNaN(系数))返回;
if(数学绝对值(系数)
在Java中,变量的引用是通过value()传递的。这意味着,如果您为变量多项式指定任何新的值,那么它在该方法之外不会产生任何效果
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中,变量是按值传递的,引用也是按值传递的,这意味着引用是被复制的”。有趣的..好的,这是一个旧的Uni赋值,讲师已经给出了部分代码。给出了公共静态void add(多项式多项式,双系数,整数幂)。这是不正确的吗??