Я пытался выяснить, почему этот код застрял в бесконечном цикле. Предыстория заключается в том, что я нашел решение, я изменил конструктор, чтобы назначить head равным нулю, и это исправило его.
Интересно, почему этот код НЕ работает.
Когда я добавляю разные узлы, он работает. Код работает как положено.
Проблемы возникают при добавлении того же узла.
public class Main {
public static void main(String[] args) {
Node one = new Node(1);
Node two = new Node(2);
LinkedList list = new LinkedList(one);
// this gives error, if i add the same nodes
list.add(two);
list.add(two);
System.out.println("Printing out:\n" + list.toString() +"\n");
}
}
public class LinkedList {
Node head;
int length = 0;
public boolean isEmpty() {
return (head==null);
}
public String toString() {
Node current = head;
String string = "Head: ";
while(current.next != null) {
string += current.toString() + " --> ";
current = current.next;
}
string += current.toString() + " --> " + current.next;
return string;
}
public LinkedList(Node node) {
// if were to set head to null and no arg, it works fine
head = node;
length = 1;
}
public void add(Node node) {
if(isEmpty()) {
System.out.println("Empty list, adding node...");
head = new Node(node.data); ++length;
return;
}
else {
Node current = head;
while(current.next != null) {
current = current.next;
}
//current.next = new Node(node.data);
current.next = node;
++length;
return;
}
}
Ошибка в том, что она никогда не заканчивается, поэтому я думаю, что она зациклена навсегда.