Задачу решил сам, но в выводе печатался последний элемент last (null). Хотя его value == null, а сам он содержит только ссылку на предыдущий.
После залез в правильное решение, оно разумеется лучше моего 😅, но прошел дебагером несколько раз, и так и не понял, почему в правильном решении метод printAll на проверке элемента last выдает false, а в моём случае true.
И т.к. javarush принял задачку, прикрепить код к вопросу мне не дает, но без него не разобрать.
Код StringsLinkedList:
package com.javarush.task.pro.task13.task1313;
public class StringsLinkedList {
private Node first = new Node();
private Node last = new Node();
public void printAll() {
Node currentElement = first.next;
while ((currentElement) != null) {
System.out.println(currentElement.value);
currentElement = currentElement.next;
}
}
public void add(String value) {
if (first.next == null || last.prev == null){
Node current = new Node(first,value,last);
first.next = current;
last.prev = current;
return;
}
Node currentElement = new Node (last.prev,value,last);
last.prev.next = currentElement;
last.prev = currentElement;
}
public static class Node {
private Node prev;
private String value;
private Node next;
Node(){}
Node(Node prev, String value, Node next){
this.prev = prev;
this.value = value;
this.next = next;
}
}
}
В методе printAll если поменять проверку ((currentElement) != null) на ((currentElement.value) != null) всё становится отлично. Но почему так?
P.S. добавлю еще код проверки, может кому удобнее будет разобраться.
package com.javarush.task.pro.task13.task1313;
/*
StringsLinkedList
*/
public class Solution {
public static void main(String[] args) {
StringsLinkedList stringsLinkedList = new StringsLinkedList();
stringsLinkedList.add("1");
stringsLinkedList.add("2");
stringsLinkedList.add("3");
stringsLinkedList.add("4");
stringsLinkedList.add("5");
stringsLinkedList.add("6");
stringsLinkedList.add("7");
stringsLinkedList.add("8");
stringsLinkedList.add("9");
stringsLinkedList.printAll();
}
}