SPL提供了双向链表、堆栈、队列、堆、降序堆、升序堆、优先级队列、定长数组、对象容器

SplQueue 队列类

进出异端,先进先出

<?php $obj = new SplQueue();//插入一个节点到top位置$obj->enqueue(1);

$obj->enqueue(2);

$obj->enqueue(3);/**

SplQueue Object

(

[flags:SplDoublyLinkedList:private] => 4

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 1

[1] => 2

[2] => 3

)

)

*/$obj->offsetSet(0,'C');/**

SplQueue Object

(

[flags:SplDoublyLinkedList:private] => 4

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 'C'

[1] => 2

[2] => 3

)

)

*/$obj->rewind();//从队列中返回并删除bottom位置的元素$obj->dequeue();/**

'C'

SplQueue Object

(

[flags:SplDoublyLinkedList:private] => 4

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 2

[1] => 3

)

)

*/复制代码

SplStack 堆栈类

单端进出时,后进先出,先进后出

$obj = new SplStack();/**

SplStack Object

(

[flags:SplDoublyLinkedList:private] => 6

[dllist:SplDoublyLinkedList:private] => Array

(

)

)

*///向堆栈放入一个节点到top位置$obj->push(1);

$obj->push(2);

$obj->push(3);/**

SplStack Object

(

[flags:SplDoublyLinkedList:private] => 6

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 1

[1] => 2

[2] => 3

)

)

*///堆栈的offset = 0 是Top所在的位置,offset = 1 是top节点靠近bottom位置的相邻节点$obj->offsetSet(0,'C');/**

SplStack Object

(

[flags:SplDoublyLinkedList:private] => 6

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 1

[1] => 2

[2] => 'C'

)

)

*/$obj->offsetSet(1,'B');/**

SplStack Object

(

[flags:SplDoublyLinkedList:private] => 6

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 1

[1] => 'B'

[2] => 'C'

)

)

*///堆栈的rewind使指针指向top节点,而双向链表的rewind指向bottom节点$obj->rewind();//堆栈的next是使指针向bottom方向相邻的节点移动一位,而链表是向top方向移动$obj->next();//遍历堆栈$obj->rewind();while($obj->valid()){ echo $obj->key().'=>'.$obj->current();

$obj->next();

}/**

2=>'C'

1=>'B'

0=>1

*///从堆栈中取出top位置的节点并删除$obj->pop();复制代码

SplDoublyLinkedList 双向链表类

$obj = new SplDoublyLinkedList();//SplDoublyLinkedList Object ( [flags:SplDoublyLinkedList:private] => 0 [dllist:SplDoublyLinkedList:private] => Array ( ) )//把新的节点数据添加到链表的顶部Top$obj->push(1);

$obj->push(2);

$obj->push(3);//把新的节点数据添加到链表底部bottom$obj->unshift(4);/**

SplDoublyLinkedList Object

(

[flags:SplDoublyLinkedList:private] => 0

[dllist:SplDoublyLinkedList:private] => Array

(

[0] => 4

[1] => 1

[2] => 2

[3] => 3

)

)

*///在没有调用rewind()方法之前输出为nullecho 'current'.$obj->current();//输出: null//把指针指向bottom节点$obj->rewind();//获取当前指针指向的节点$obj->current();//输出: 4//将执行挪到下一个$obj->next();

$obj->current();//输出: 1$obj->prev();

$obj->current();//输出: 4//越界了$obj->next();

$obj->next();

$obj->next();

$obj->next();

$obj->current();//输出: null//判断当前节点是否有效$obj->valid()//输出: false$obj->prev();

$obj->valid()//输出: true$obj->shift();//把top节点从链表中删除并返回$obj->pop();//输出 3//把bottom节点从链表中删除并返回$obj->shift();//输出 4//返回top节点$obj->top();//返回bottom节点$obj->bottom();复制代码

感谢您的阅读,如果对您有帮助,欢迎关注”CRMEB”。码云上有我们开源的商城项目,知识付费项目,均是基于PHP+vue开发,学习研究欢迎使用,关注我们保持联系!

想了解更多编程学习,敬请关注php培训栏目!

php splqueue 5.5安装,解析PHP标准库SPL数据结构相关推荐

  1. php+spl+栈,PHP SPL标准库之数据结构栈(SplStack)介绍

    PHP SPL标准库之数据结构栈(SplStack)介绍2020-06-13 22:01:42 栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈) SplS ...

  2. php 查看spl,PHP使用标准库spl实现的观察者模式示例

    本文实例讲述了PHP使用标准库spl实现的观察者模式.分享给大家供大家参考,具体如下: 前面使用纯php实现了一个观察者模式(php观察者模式), 现在使用php标准库spl在次实现观察者模式,好处是 ...

  3. CC++初学者编程教程(3) 安装VS2010 boost标准库开发环境

    1.      BOOST编译过程非常复杂,目前为了学习BOOST,首先搭建基于VS2010的BOOST开发环境. Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程 ...

  4. vs2010c语言安装,VS2010 boost标准库开发环境安装教程

    分享VS2010 boost标准库开发环境安装教程 1. BOOST编译过程非常复杂,目前为了学习BOOST,首先搭建基于VS2010的BOOST开发环境. Boost库是一个可移植.提供源代码的C+ ...

  5. 解决一个国际化标准库的问题

    W3A系统缺乏亮点,突发奇想想到一个新的东西,别人没做过的功能,准备尝试下. 居然发现该功能缺乏一些QT库,瞬间茫然了,开始了这个解决之旅. 这个是报的错误: Unable to load libra ...

  6. 小白入门——Python标准库和第三方库简介

    首先简要介绍如何查看python库安装位置,常见Python标准库和常见Python第三方库简介. 查看python库安装位置 1.使用pip list查看 在cmd中输入python -m pip ...

  7. Python标准库和第三方库简介

    Python标准库和第三方库简介 先简要介绍如何查看python库安装位置,常见Python标准库和常见Python第三方库简介. 查看python库安装位置 1.使用pip list查看 在cmd中 ...

  8. java stl stack_C++标准库之stack

    C++库以提供"模板"为主.所谓模板,是指不必预先制定类型的函数或类.我们可以借助STL(标准模板库 Standard Template Library, STL)提供的高效算法来 ...

  9. Python 标准库之 xml.etree.ElementTree xml解析

    Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...

最新文章

  1. PL SQL笔记(三)
  2. 录入键盘字母输入并将小写变为大写
  3. 进阶学习(3.14) Strategy Pattern 策略模式
  4. require.js基本认识
  5. 【☢️伤害性不高,侮辱性极强!☢️】Win10更新21H1后关闭右下角天气和新闻
  6. vue 判断同一数组内的值是否一直_前端代码+后端API,值得一学的Vue高仿音乐播放器实战项目
  7. 4.边缘光照的描边shader
  8. 划分用户故事(user-story)的原则
  9. 获取要素集中字段的唯一值
  10. Arduino笔记-定时器中断(MsTimer2库使用)
  11. modbus连续读取时数据不正确_维纶触摸屏控制变频器是通过触摸屏与变频器之间的Modbus通信实现...
  12. js 密码强弱的实现
  13. 记一次代码被公司电脑加密后,编译不通过
  14. 韩顺平泰牛php2016,2016 泰牛程序员 韩顺平 PHP 大牛班 Div Css课程
  15. 大数据之HBase 实战微博系统 完整使用 (第六章)
  16. 套件端口 群晖_群晖套件重装过程中提示端口被占用的解决方案
  17. matlab 文本框方向,ppt文本框文字方向为所有文字旋转的设置方法
  18. 中国第一大微商TST涉嫌传销案听证会结束
  19. jQuery学习理解(详细)
  20. 商业智能BI:打破数据孤岛,打造企业数字化转型新引擎

热门文章

  1. 深入框架本源系列 —— Virtual Dom
  2. js将base64做UrlEncode转码
  3. cmail服务器安装后无法登录的解决办法
  4. 《PHP精粹:编写高效PHP代码》——1.1节为什么要使用面向对象编程
  5. Qt之QNetworkInterface
  6. 5、android使用意图传递数据之全局变量传递
  7. Struts2中访问HttpServletRequest和HttpSession
  8. 小强的HTML5移动开发之路(43)——JqueryMobile页眉、工具栏和标签栏导航
  9. SpringSide示例之HelloWorld
  10. 趣味数据故事_坏数据的好故事