首页 > php教程 > 正文

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

转载 2019-02-11 0 20

SPL::是PHP自带的库

当你苦苦的追求PHP数据结构、队列之类的第三方库时候,我会告诉你PHP官方也有这样的类库。

今天,我们来看看splDoublylinkedList类。

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

一,增加节点

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

运行结果:

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

我们看到,节点名称是

[flags:SplDoublyLinkedList:private] => 0

节点数据是

[dllist:SplDoublyLinkedList:private] => Array()

这就是双向数据链表的基本结构。

我们用push()方法增加一条节点:

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

运行结果:

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

那么,我们看看unshift()方法是怎么增加节点的?

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

运行结果:

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

我们看到:push方法增加的节点,会置于数据结构的后面(top、顶部)。unshift方法增加的节点会置于数据结构的前面(bottom、底部)。

二,删除节点

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

运行结果:

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

运行结果:

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

对比得出结论:

pop方法删除的是数据结构下面的节点(top),shift方法删除的是数据结构上面的节点(bottom)。

三,节点操作

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

运行结果:

我们猜到是

通过unshift增加的节点三

结果恰好是

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

上下移动指针,下一个节点是?

我们猜测,是

通过unshift增加的节点二

结果恰好是

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

这时候呢?向前移动一个指针。

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

这点不难,next,prev方法就是前后移动指针,current方法告诉我们的是当前节点。

注意:节点操作必须先要使用rewind方法标出bottom(上面的第一个)节点,切记切记。

否则返回什么?自己看。

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

我有个问题,这些方法都返回什么?

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

运行结果:

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

增加节点全部返回1。

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

运行结果:

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

删除节点,返回删除节点数据。

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

程序员必学教程——神奇的PHP利剑:SPL操作之PHP双向链表操作

除了current返回当前的数据,其他的均返回空

就到这儿,下期预告:堆栈。

相关文章


  • 「php」php如何实现根据前序和中序遍历结果重建二叉树(代码)
  • php有两个经典类库可以让你事半功倍,php程序员你们知道?
  • 不懂PHP又找不到合适的PHP程序猿肿么办?看这里
  • 扣丁学堂PHP培训简述PHP语言的基础知识和特点有哪些
  • 跟着MISS学PHP版本升级:linux下把PHP当前版本升级到5.6
  • 「php」如何使用php中ftp的上传和下载功能的实现代码
  • 7月10日直播提醒!北邮在线PHP权威课程PHP:环境配置教程
  • JavaEE和PHP有什么区别 扣丁学堂JavaEE和PHP学哪个好