Узлы на более высоких уровнях моего списка пропусков не равны друг другу - PullRequest
0 голосов
/ 16 марта 2020

Короче говоря (описано в одной из моих предыдущих задач), я делаю код java, который вставляет, удаляет, ищет и печатает узлы из связанного списка. Узлы go из -infinity> (...)> бесконечность с бесконечностью, являющейся первым и последним узлами. Но я столкнулся с проблемой при переводе недавно вставленных узлов на более высокие уровни.

static Node partner(Node head, double item, double lv, boolean next, Node first, Node last) {
        Node head2 = new Node();

        if(head.up != null)
            return head.up;

        else if(head.up == null && next == true && head.next != last)
            head2 = partner(head.next, item, lv, next, first, last);


        else if(head.up == null && next == false && head.prev != first) 
            head2 = partner(head.prev, item, lv, next, first, last);

        else {
            if(next) 
                return last;
            else 
                return first;
        }
        return head2;
    }

Когда моя функция продвижения вызывает эту функцию партнера (через main> double insert> double promo> node partner), функция партнера предполагается, что он начинается в начале нового узла (на 1 уровень ниже вновь повышенного уровня) и находит следующий или предыдущий узел, максимальный уровень которого равен или выше, чем у текущего узла (если он не может найти такой узел) , он использует первый или последний узлы). После этого он возвращает этот узел в функцию продвижения, чтобы установить его в качестве следующего или предыдущего узла для текущего узла этого уровня. Однако вместо этого моя функция встречает исключение нулевого указателя для этого значения, где head равно null, а head.up не может проверяться или быть жизнеспособным в операторах if. Я не знаю, как исправить эту ошибку, кроме как создать оператор if, чтобы проверить, является ли заголовок нулевым, но он вообще не должен быть нулевым. Если вам необходимо просмотреть мое рекламное заявление, чтобы определить мою проблему, сообщите мне.

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