链表方法更改其他列表(Java)

链表方法更改其他列表(Java),java,linked-list,polynomial-math,Java,Linked List,Polynomial Math,我编写了一个使用链表表示多项式的类(该列表中的成员是我创建的另一个称为PolyNodes的类的对象)。在这个类中,我编写了这个方法(这个方法应该得到一个paramater多项式,并将其添加到现有的多项式中,返回两个多项式的和,同时不更改paramater): 由于某种原因(我无法理解),当我使用这种方法时,当我试图保持它不变时,paramater多项式也会发生变化。我不知道为什么。有人能帮我吗?我在这里失去了希望。你有这样一句话: PolyNode curr=\u head,curr2=其他。\

我编写了一个使用链表表示多项式的类(该列表中的成员是我创建的另一个称为PolyNodes的类的对象)。在这个类中,我编写了这个方法(这个方法应该得到一个paramater多项式,并将其添加到现有的多项式中,返回两个多项式的和,同时不更改paramater):

由于某种原因(我无法理解),当我使用这种方法时,当我试图保持它不变时,paramater多项式也会发生变化。我不知道为什么。有人能帮我吗?我在这里失去了希望。

你有这样一句话:
PolyNode curr=\u head,curr2=其他。\u head
你在那里所做的就是引用_head和其他。_head(引用的是它们的内存地址)。 所以,当您更改对象的名称时,具有相同内存地址的所有对象也将更改。 如果不想更改它们,则需要在内存中为它们分配一个新地址。 你可以这样做:

PolyNode curr = new PolyNode(_head)

假设您有一个复制构造函数。

我没有深入阅读代码,但您正在更改curr2,它最初是参数的开头。您的问题可能就在这一点上。您能告诉我我要更改curr2的行吗?我不知道确切的行,但您在两个不同的位置有“curr2=curr2.getNext();”。用ctrl+f检查curr2,您会看到它。问题是我不更改curr2,我对它使用的唯一方法是get方法。是的,它更改curr2,但它只更改指向的位置,而不是其他位置。\u head
PolyNode curr = new PolyNode(_head)