你可能是对的,只是不太有用。
理论上,链表有很多用途(尤其是跳舞链表)。但其中大多数涉及到在其他地方存储和克隆迭代器、从两个以上的方向访问内容,或者拆分和合并列表。spldubleLinkedList似乎没有这些。
如果不适用于算法,一种用法是允许对象在某个列表中以恒定的时间删除其自身的引用,释放其内存,并且在插入或删除后不必改变列表的顺序(通过散列或与最后一项交换)。但这需要在这些对象中存储列表的迭代器。
如果没有这些功能,它们的行为就像两个Deques。如果只需要使用迭代器访问项,它们就像两个堆栈。在单线程简单情况下,一个更好的方法是使用两个堆栈(可能是固定数组,也可能是同一数组的两端)。每当您希望迭代器移动时,从一个堆栈中弹出并将其推送到另一个堆栈,并且一个堆栈的顶部是当前项。如果您还需要访问头部和尾部,您需要用Deques替换堆栈。
但是,如果您想在不知道最大大小的情况下实现栈或deques本身,或者甚至想分配普通链表的节点(在没有这些库的语言中,比如在PHP中),好的方法是使用没有这些功能的双链表将一些固定数组链接在一起。不知怎么的,你仍然需要它。
PHP文档本身,就像Java语言一样,表明它们应该只是一个支持一些奇怪的特性的DeQueD,而不是两个DeGuy(我想)。如果你真的需要双重链接列表,不要使用它们。