PHP标准库(SPL)学习之SplDoublyLinkedList

发布于 2017-03-06 19:44:48 阅读 374

双链表是一种重要的线性存储结构,对于双链表中的每个节点,不仅仅存储自己的信息,还要保存前驱和后继节点的地址。

下面是双向链表的相关示例代码

<?php
$list = new SplDoublyLinkedList();

$list->push([1 => 'sdfdsfsd', 'start' => 'sadrasdasd']);

$list->push(['sdfdsfsdqq', 'sadrasdasdqqq']);

$list->unshift(['unshift_data']);
$list->shift();

echo $list->count().PHP_EOL;

/**
 * 迭代方向
 * SplDoublyLinkedList::IT_MODE_FIFO First_Input_First_Output 先入先出(队列)
 * SplDoublyLinkedList::IT_MODE_LIFO Last_Input_First_Output 后入先出(堆栈)
 *
 * 迭代行为
 * SplDoublyLinkedList::IT_MODE_DELETE 迭代后删除数据
 * SplDoublyLinkedList::IT_MODE_KEEP  迭代后保存数据
 */
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO);

for ($list->rewind(); $list->valid(); $list->next()){
    var_dump($list->key());
    var_dump($list->current());
}

var_dump($list->isEmpty());