Почему я не могу использовать метод return как указатель в Java? - PullRequest
0 голосов
/ 25 сентября 2019

Решено, спасибо.Я фактически добавил head.next в последний узел моего head.child, поэтому при следующем запуске lastNode был возвращен другой указатель.

В следующем коде закомментированный код дал другой результат, почему?

Я ожидал того же поведения.

            Node p = lastNode(head.child); //Define a extra pointer
            p.next = head.next;
            if(head.next!=null) head.next.prev = p;
            //lastNode(head.child).next = head.next; // Not Working
            //head.next.prev = lastNode(head.child);

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Второе вычисление lastNode(head.child) после изменения lastNode(head.child).next дает вам новый последний узел.Вы должны сохранить указатель на старый последний узел, чтобы обновить prev нового последнего узла.

0 голосов
/ 25 сентября 2019

Это не имеет ничего общего с Java.В первом примере вы вызываете lastNode один раз и сохраняете результат в p.Во втором примере вы дважды вызываете lastNode, но после первого вызова вы добавляете новый последний узел в свой список, поэтому возвращаемое значение будет другим во второй раз!

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