SPL::是PHP自带的库
当你苦苦的追求PHP数据结构、队列之类的第三方库时候,我会告诉你PHP官方也有这样的类库。
今天,我们来看看splDoublylinkedList类。
一,增加节点
运行结果:
我们看到,节点名称是
[ flags :SplDoublyLinkedList:private] => 0
节点数据是
[dllist:SplDoublyLinkedList:private] => Array ( )
这就是双向数据链表的基本结构。
我们用push()方法增加一条节点:
运行结果:
那么,我们看看unshift()方法是怎么增加节点的?
运行结果:
我们看到:push方法增加的节点,会置于数据结构的后面(top、顶部)。unshift方法增加的节点会置于数据结构的前面(bottom、底部)。
二,删除节点
运行结果:
运行结果:
对比得出结论:
pop方法删除的是数据结构下面的节点(top),shift方法删除的是数据结构上面的节点(bottom)。
三,节点操作
运行结果:
我们猜到是
通过unshift增加的节点三
结果恰好是
上下移动指针,下一个节点是?
我们猜测,是
通过unshift增加的节点二
结果恰好是
这时候呢?向前移动一个指针。
这点不难,next,prev方法就是前后移动指针,current方法告诉我们的是当前节点。
注意:节点操作必须先要使用rewind方法标出bottom(上面的第一个)节点,切记切记。
否则返回什么?自己看。
我有个问题,这些方法都返回什么?
运行结果:
增加节点全部返回1。
运行结果:
删除节点,返回删除节点数据。
除了current返回当前的数据,其他的均返回空