Я думаю, что метод правильный. Просто убедитесь, что при вызове метода reverse () присваиваете результат метода reverse () его голове.
head = reverse(head);//correct coz head changes after reversal
, если не удается присвоить результат метода reverse () к заголовку.
reverse(head)//Wrong coz head won't change after reversal
заголовок не будет обновлен, и он будет указывать только на хвост связанного списка. Надеюсь, это поможет.