//SPL数据结构之双向链表
$obj = new SplDoublyLinkedList();
$obj->push(1);//push将新的节点数据添加到链表的Top
$obj->push(2);
$obj->push(3);
$obj->unshift(10);//unshift将新的节点数据添加到链表的Bottom
print_r($obj);
$obj->rewind();//rewind操作用于把节点指针指向Bottom所在的节点
echo 'current:'.$obj->current()."\n";//current获取节点指针指向的节点(当前节点)
$obj->next();//指针指向下一个节点(Top)
echo 'next node:'.$obj->current()."\n";
$obj->next();
$obj->next();
$obj->prev();//指针指向上一个节点(Bottom)
echo 'next node:'.$obj->current()."\n";
$obj->next();
$obj->next();
echo 'next node:'.$obj->current()."\n";
if ($obj->current()){
echo "Current node is valid\n";
} else {
echo "Current node is invalid\n";
}
$obj->rewind();
//valid如果当前是有效节点,valid返回true
if ($obj->valid()){
echo "valid list\n";
} else {
echo "invalid list\n";
}
//pop将Top位置的节点从链表中删除,并返回。如果current正好指向Top位置,那么调用pop之后current会失效
echo "pop value:".$obj->pop()."\n";
$obj->pop();
print_r($obj);
//shift将Bottom位置的节点从链表中删除,并返回
$obj->shift();
print_r($obj);