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 相关文章推荐
PHP 程序员的调试技术小结
Nov 15 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
Jun 02 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
PHP中使用BigMap实例
Mar 30 PHP
PHP网络操作函数汇总
May 18 PHP
PHP线程的内存回收问题
Jul 08 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
php和asp语法上的区别总结
May 12 PHP
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 PHP
php redis setnx分布式锁简单原理解析
Oct 23 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中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
javascript实现拖放效果
2015/12/16 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
js实现无缝滚动图
2017/02/22 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
动态统计当前输入内容的字节、字符数的实例详解
2017/10/27 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
在Python中操作字典之clear()方法的使用
2015/05/21 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
transform python环境快速配置方法
2018/09/27 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
8种常用的Python工具
2020/08/05 Python
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
安全生产月活动总结
2014/05/04 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
个人总结怎么写
2015/02/26 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
用Python实现Newton插值法
2021/04/17 Python
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python