本日,我们来看看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返回当前的数据,其他的均返回空
就到这儿,下期预报:堆栈。