Я хотел написать некоторый тренировочный код, чтобы можно было добавить его в конец связанного списка, но код ниже не добавляет элементы 5-9 в связанный список. Это добавляет к списку только 0 - 4.
Я настроил способ обхода связанного списка, который устранил проблему, но я все еще не очень ясно понимаю, почему первый фрагмент кода печатался неправильно.
SinglyLinkedList<Integer> sg = new SinglyLinkedList<>();
System.out.println(sg.searchNode(5));
for (int i = 0; i < 5; i++) {
sg.insertAtHead(i);
}
for (int i = 5; i < 10; i++) {
sg.insertAtEnd(i);
}
sg.printList();
}
Код, который не работал:
public void insertAtEnd(T data) {
if (isEmpty()) {
insertAtHead(data);
return;
}
Node newNode = new Node();
newNode.data = data;
newNode.nextNode = null;
Node currentNode = headNode;
while (currentNode != null) {
currentNode = currentNode.nextNode;
}
currentNode = newNode;
size++;
}
Код, который работал:
public void insertAtEnd(T data) {
if (isEmpty()) {
insertAtHead(data);
return;
}
Node newNode = new Node();
newNode.data = data;
newNode.nextNode = null;
Node currentNode = headNode;
while (currentNode.nextNode != null) {
currentNode = currentNode.nextNode;
}
currentNode.nextNode = newNode;
size++;
}
- Вывод для правильно работающего кода:
4 -> 3 -> 2 -> 1 -> 0 -> 5 -> 6 -> 7 -> 8 -> 9 -> NULL
- Вывод неправильного кода:
4 -> 3 -> 2 -> 1 -> 0 -> NULL