В вашем методе есть логическая ошибка.
В конце первого прохода цикла while:
- curr (2-й элемент в списке)
- curr.next (1-й элемент в списке)
- temp = curr = (2-й элемент в списке)
Во втором проходе цикла while,Вы ожидаете достичь 3-го элемента, используя temp.next.Это неправильно, потому что:
- temp.next = curr.next = (1-й элемент в списке)
Оставляя вам бесконечный цикл междупервый и второй элемент без условия выхода.
Я оставлю вас, чтобы найти правильное решение для этого.
(Подсказка: температура должна быть назначена элементу ??? в 1-м проходе)