首页 > php教程 > 正文

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

转载 2019-02-11 0 1

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语言是世界上最好的语言
  • 「进阶篇」docker编排PHP开发坏境
  • 如何在 HTTP 头中隐藏 PHP 版本号
  • PHP作为服务器端语言,有哪些优点?
  • PHP学习jQuery笔记(4)——关于插件
  • 作者信息