Я изучаю структуры данных, и я должен сам создать двойной связанный список, создав объекты Node и List вместо использования реализации Java LikedList, и у меня возникла ошибка переполнения стека каждый раз, когда я пытался добавить 2 элемента в список, и я не знаю, почему. Не могли бы вы мне помочь?Ошибка переполнения стека при запуске списка
public class DoubleLinked {
Node head;
Node tail;
int size;
public DoubleLinked() {
head = tail = null;
size = 0;
}
public void insertOnHead(int x) {
Node newNode = new Node();
newNode.value = x;
if(head == null) {
head = newNode;
size++;
} else {
newNode.next = head;
head.previous = newNode;
head = newNode;
size++;
}
}
@Override
public String toString() {
return "[Head: " + head + ", Tail: " + tail + ", Size: "
+ size + "]";
}
}
public class Node {
int value;
Node next;
Node previous;
@Override
public String toString() {
return "Node [Value: " + value + ", Next: " + next + ", Previous: " + previous + "]";
}
}
Вставляет первый элемент (5), но не второй (6).
Главная:
public class DEMain
{
public static void main(String[] args)
{
DoubleLinked l1 = new DoubleLinked();
l1.insertOnHead(5);
l1.insertOnHead(6);
System.out.println(l1);
}
}
StackTrace:
Exception in thread "main" java.lang.StackOverflowError at
java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:63)
at java.lang.StringBuilder.<init>(StringBuilder.java:109)
at DoblementeEnlazadas.Nodo.toString(Nodo.java:12)
at java.lang.String.valueOf(String.java:2854)
at java.lang.StringBuilder.append(StringBuilder.java:128)
at DoblementeEnlazadas.Nodo.toString(Nodo.java:12)
Первым шагом является чтение и публикация стека исключений след. Это говорит вам и нам, где проблема. –
Также укажите код, в котором вы проводите тест. В настоящее время этот код не должен давать 'StackOverflowError' (даже если он не будет работать так, как ожидалось). –
Не оставляйте комментарии и комментарии в коде и stacktraces. Поместите их в вопрос и сделайте их разборчивыми. –