双链表是一种重要的线性存储结构,对于双链表中的每个节点,不仅仅存储自己的信息,还要保存前驱和后继节点的地址。
下面是双向链表的相关示例代码
<?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());