Я пытаюсь решить проблему с Hacker Rank, которая требует использования LinkedList
, и я обнаружил нечто странное. Цель состоит в том, чтобы напечатать LinkedList
в обратном порядке.
Я попытался отладить программу, но не могу найти что-то не так.
В первом фрагменте кода ниже я могу поместить только первый и последний элементы LinkedList
в ArrayList
.
static void reversePrint(SinglyLinkedListNode head) {
List<Integer> tempList = null;
if (head == null)
return;
else {
tempList = new ArrayList<>();
tempList.add(head.data);
while(head.next != null)
head = head.next;
tempList.add(head.data);
}
System.out.println("Size of the List -"+tempList.size());
for(int i = tempList.size()-1; i >= 0; i--)
System.out.println("Index +"+i+" "+tempList.get(i));
}
В следующем фрагменте кода я получаю java.lang.OutOfMemoryError: Java heap space
и не могу понять, что на самом деле вызывает эту ошибку.
static void reversePrint(SinglyLinkedListNode head) {
List<Integer> tempList = null;
if (head == null)
return;
else {
tempList = new ArrayList<>();
while(head.next != null)
tempList.add(head.data);
head = head.next;
}
tempList.add(head.data);
System.out.println("Size of the List -"+tempList.size());
for(int i = tempList.size()-1; i >= 0; i--)
System.out.println("Index +"+i+" "+tempList.get(i));
}