Как удалить повторяющиеся элементы в односвязном списке в Java?

1

Я реализовал свой собственный отдельный список, но у меня проблемы с удалением повторяющихся элементов, которые у меня есть в моем списке. Здесь моя реализация:

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 в этом примере. Я пробовал все, это последняя версия моего метода. Может ли кто-нибудь помочь мне или хотя бы объяснить, как это должно быть сделано?

Теги:
linked-list
singly-linked-list

1 ответ

0
Лучший ответ

NPE происходит, когда вы пытаетесь запустить getNext на удаленном узле.

  • 0
    Так во время цикла? Как мне это исправить?
  • 0
    Подумай о том, что происходит. Вы делаете оператор if, чтобы удалить его, затем пытаетесь запустить метод getNext. Осмотрите немного больше, и если у вас все еще есть проблема, ответьте снова.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню