PHP SPL标准库之数据结构栈(SplStack)介绍


Posted in PHP onMay 12, 2015

栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈)

PHP SPL标准库之数据结构栈(SplStack)介绍

SplStack就是继承双链表(SplDoublyLinkedList)实现栈。

类摘要如下:

PHP SPL标准库之数据结构栈(SplStack)介绍

简单使用如下:

//把栈想象成一个颠倒的数组
$stack = new SplStack();
/**
 * 可见栈和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:
 * (1)SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_KEEP (默认值,迭代后数据保存)
 * (2)SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_DELETE (迭代后数据删除)
 */
$stack->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_DELETE);
$stack->push('a');
$stack->push('b');
$stack->push('c');
 
$stack->pop(); //出栈
 
$stack->offsetSet(0, 'first');//index 为0的是最后一个元素
 
foreach($stack as $item) {
 echo $item . PHP_EOL; // first a
}
 
print_R($stack); //测试IteratorMode

PHP 相关文章推荐
第三节 定义一个类 [3]
Oct 09 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
php自动加载机制的深入分析
Jun 08 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
php实现singleton()单例模式实例
Nov 06 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
PHP数组操作简单案例分析
Oct 15 PHP
php获取开始与结束日期之间所有日期的方法
Nov 29 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
基于PHP的微信公众号的开发流程详解
Aug 07 PHP
php遍历类中包含的所有元素的方法
May 12 #PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
May 12 #PHP
php实现每天自动变换随机问候语的方法
May 12 #PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 #PHP
php对象和数组相互转换的方法
May 12 #PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
May 12 #PHP
php对数组内元素进行随机调换的方法
May 12 #PHP
You might like
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
写自已的js类库需要的核心代码
2012/07/16 Javascript
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
python turtle 绘制太极图的实例
2019/12/18 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
小学生班会演讲稿
2014/01/09 职场文书
职业女性的职业规划
2014/03/04 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
触电现场处置方案
2014/05/14 职场文书
董事长助理工作职责
2014/06/08 职场文书
纪律教育月活动总结
2014/08/26 职场文书
校园新闻稿范文
2015/07/18 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
高中历史教学反思
2016/02/19 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle