Вы, вероятно, правы, и это просто не очень полезно.
В теории существует много применений связанных списков (особенно танцующих ссылок).Но большинство из них включает в себя либо сохранение и клонирование своих итераторов в другом месте, доступ к контенту более чем в двух направлениях, либо разделение и объединение списков.SplDoublyLinkedList, по-видимому, не имеет их.
Если это не для алгоритмов, одно из применений состоит в том, чтобы позволить объекту удалить ссылку на себя в некотором списке в постоянное время, освободив его память и не перетасовывая список (путем хешированияили обмен с последним элементом) после вставки или удаления.Но это требует хранения итератора списка в этих объектах.
Без этих функций они ведут себя как два запроса.Если вам нужен только доступ к элементам с помощью итератора, они похожи на два стека.Один лучший способ в однопоточных простых случаях, за исключением того, что класс еще не заключен в класс, - это просто использовать два стека (возможно, фиксированные массивы или оба конца одного и того же массива).Выдвигайтесь из одного стека и перемещайте его в другой всякий раз, когда вы хотите, чтобы итератор перемещался, а верхняя часть одного стека является текущим элементом.Если вам также нужен доступ к голове и хвосту, вам нужно заменить стеки на deques.
Но если вы хотите реализовать стеки или сами deques, не зная максимального размера, или даже выделить узлыобычные связанные списки (на языке без этих библиотек, как в PHP), хороший способ - объединить несколько фиксированных массивов вместе, используя двусвязные списки без этих функций.Каким-то образом вам все еще это понадобится.
Сама документация PHP, как и Java, предполагает, что они должны быть просто декой, поддерживающей некоторые дополнительные странные функции, а не двумя запросами (я думаю).Не используйте их, если вам действительно нужны двусвязные списки.