Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java多项式单链表问题_Java - Fatal编程技术网

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(多项式多项式,双系数,整数幂)。这是不正确的吗??