java如何删除单链表中重复的元素?
How to delete repetitive elements in singly linked list in java?
我已经实现了自己的单向链表,但我在删除列表中的重复元素时遇到了问题。
这是我的实现:
List.java:
public class List {
private Element first;
private int size;
public void removeRepetitive()
{
Element e1 = first;
Element e2 = e1.getNext();
while(e1.getNext() != null && e2.getNext() != null)
{
while(e2.getNext() != null)
{
if(e1.getCard().equals(e2.getCard()))
{
remove(e2.getCard());
}
e2 = e2.getNext();
}
e1 = e1.getNext();
e2 = e1.getNext();
}
}
}
Element.java:
package lists;
public class Element {
private Karta karta;
private Element next;
public Element(Karta k)
{
karta = k;
next = null;
}
public Element(Karta k, Element e)
{
karta = k;
next = e;
}
public Karta getCard()
{
return karta;
}
public Element getNext()
{
return next;
}
public void setNext(Element e)
{
next = e;
}
public void setCard(Karta k)
{
karta = k;
}
我设法编写了简单的删除方法,但在此示例中我一直遇到 NullPointerException。我已经尝试了一切,这是我方法的最新版本。谁能帮助我或至少解释一下应该怎么做?
当您尝试 运行 getNext 在您已删除的节点上时,会发生 NPE。
我已经实现了自己的单向链表,但我在删除列表中的重复元素时遇到了问题。 这是我的实现:
List.java:
public class List {
private Element first;
private int size;
public void removeRepetitive()
{
Element e1 = first;
Element e2 = e1.getNext();
while(e1.getNext() != null && e2.getNext() != null)
{
while(e2.getNext() != null)
{
if(e1.getCard().equals(e2.getCard()))
{
remove(e2.getCard());
}
e2 = e2.getNext();
}
e1 = e1.getNext();
e2 = e1.getNext();
}
}
}
Element.java:
package lists;
public class Element {
private Karta karta;
private Element next;
public Element(Karta k)
{
karta = k;
next = null;
}
public Element(Karta k, Element e)
{
karta = k;
next = e;
}
public Karta getCard()
{
return karta;
}
public Element getNext()
{
return next;
}
public void setNext(Element e)
{
next = e;
}
public void setCard(Karta k)
{
karta = k;
}
我设法编写了简单的删除方法,但在此示例中我一直遇到 NullPointerException。我已经尝试了一切,这是我方法的最新版本。谁能帮助我或至少解释一下应该怎么做?
当您尝试 运行 getNext 在您已删除的节点上时,会发生 NPE。