Математически вы можете рассматривать связанный список (возможно, содержащий цикл) как частичную функцию из набора узлов в себя, где каждый узел отображается на свой преемник, и каждый узел в конечном итоге доступен из начального узла. (Последний узел не имеет преемника). Обращение связанного списка может повлечь за собой инвертирование этой функции, поскольку переход по ссылке и ее обратный просмотр должны привести вас к тому, с чего вы начали.
Если связанный список не содержит цикл, то эта частичная функция является инъективной (один к одному), что означает, что никакие два узла не отображаются в один и тот же преемник. Инъективные функции действительно могут быть инвертированы, поэтому вы можете перевернуть обычный связанный список. Однако, если список содержит цикл, то есть два узла с одним и тем же преемником, поэтому функция не является инъективной и, следовательно, не имеет обратного. Поэтому нет, вы не можете перевернуть связанный список и ожидать получения другого связанного списка, если в списке есть цикл.
Однако, если вы рассматриваете связанный список как более общий граф, в котором каждый узел может иметь любое количество входящих или исходящих ребер, то обратное действительно существует. Это просто больше не связанный список.