удалить дублированные элементы из середины в связанном списке - PullRequest
0 голосов
/ 24 мая 2019

Итак, у меня есть метод, который удаляет дублированные элементы, используя Linked List, метод работает на удаление дублированных элементов с начала (обратный проход) и с конца (обратный проход), но не с середины (возврат не выполнен, если сработало должно вернуть пропуск) здесь идет пример вывода:

Некоторые дубликаты (один конец): (D, E, C, D, C, C, B, A) - A -> (D, E, C, D, C, C, B) Все "А" вычеркнуто: ПРОЙДЕНО Другие не удалены: PASS

Некоторые дубликаты (в середине): (D, E, C, D, C, C, B, A) - C -> (D, E, D, C, B, A) Все "C" удалены: FAIL * Другие не удалены: FAIL *

Некоторые дубликаты (другой конец): (D, E, C, D, C, C, B, A) - D -> (E, C, C, C, B, A) Все "D" удалены: PASS Другие не удалены: PASS

вот метод, который я использую:

    public void expunge(T anElement){
        Node prev = null;
        Node currNode = firstNode;
       // boolean findDublicate = false;

        while(currNode != null){
        if(currNode.data.equals(anElement)){
            //Found something to remove
            numberOfEntries--;


            if(prev == null){

                firstNode = currNode.next;
            } else {
                prev.next = currNode.next;
            }
             if(prev == anElement){
                currNode.next = prev.next;}

        }

        //Maintain loop invariant: prev is the node before curr.
        if(currNode.next != firstNode){
            prev = currNode;
        }

        currNode = currNode.next;
    }    
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...