Сортировка двусвязного списка с помощью Bubble Sort и метода Swap - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь отсортировать самореализуемый двусвязный список, однако он, кажется, повторяется бесконечно, и я не уверен, что делаю неправильно. Любая помощь будет принята с благодарностью.

    public void sortLine() {
     Module current = this.getLeftMostModule();
     Module next = this.getLeftMostModule().getRight();
     while(next != this.getRightMostModule()) {
         while(next != null) {
             if(current.getName().compareToIgnoreCase(next.getName()) > 0) {
                 swap(current, next);
             }
             next = next.getRight();
         }
         current = current.getRight();
     }
    }
    public void swap(Module current, Module next) {
        boolean isLeft = false;
        boolean isRight = false;
        if(current.isLeftMostModule()) {
            isLeft = true;
        }
        if(next.isRightMostModule()) {
            isRight = true;
        }
        Module temp = current;
        current = next;
        next = temp;
        if(isLeft) {
            next.setLeftMostModule();
            current.setNonMostModule();
        }
        else if(isRight) {
            next.setNonMostModule();
            current.setRightMostModule();
        }

    }

Есть функция подкачки, которую я вызываю, и которую я включил. Спасибо. Мне не разрешено добавлять метод setName, и я не могу получить доступ к полю имени, кроме getName. Однако я могу добавить вспомогательные методы в этот класс.

РЕДАКТИРОВАТЬ - ОБНОВЛЕНО код, однако он все еще не работает. Получение NPE на CompareToIgnoreCase и не получить желаемый результат.

1 Ответ

0 голосов
/ 25 февраля 2020

Счетчик i во внешнем for-l oop никогда не увеличивается.

...