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 相关文章推荐
一个用于mysql的数据库抽象层函数库
Oct 09 PHP
PHP去除数组中重复的元素并按键名排序函数
Aug 18 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
PHP操作Memcache实例介绍
Jun 14 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
yii2带搜索功能的下拉框实例详解
May 12 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 PHP
laravel5.1框架model类查询的实现方法
Oct 08 PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 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中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
Vue+element-ui 实现表格的分页功能示例
2018/08/18 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
详解Vue源码中一些util函数
2019/04/24 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python Flask实现restful api service
2017/12/04 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
非常详细的C#面试题集
2016/07/13 面试题
一些Unix笔试题和面试题
2012/09/25 面试题
环境工程大学生个人的自我评价
2013/10/08 职场文书
进修护士自我鉴定
2013/10/14 职场文书
师范大学音乐表演专业求职信
2013/10/23 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
档案信息化建设方案
2014/05/16 职场文书
感恩教育月活动总结
2014/07/07 职场文书
心得体会的写法
2014/09/05 职场文书
2014年度思想工作总结
2014/11/27 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers