я не понимаю, как это поможет развернуть список за константу времени
Ладно. Раз все хлеб, то идея проста:
Будем в Node хранить XOR указателя на prev и next. Дальше, очевидно, у нас будет указатель на голову и хвост. Операция revert просто будет выбирать нужный из них как голову. Идти по списку очевидно как: getNext(){return prev^next;}