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与javascript对多项选择的处理
Oct 09 PHP
PHP 字符串操作入门教程
Dec 06 PHP
轻松修复Discuz!数据库
May 03 PHP
php完全过滤HTML,JS,CSS等标签
Jan 16 PHP
PHP的array_diff()函数在处理大数组时的效率问题
Nov 27 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 PHP
php实现微信扫码支付
Mar 26 PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 PHP
php对象工厂类完整示例
Aug 09 PHP
PHP 时间处理类Carbon
May 20 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防盗链代码实例
2014/08/27 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
移动节点的jquery代码
2014/01/13 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
详解webpack解惑:require的五种用法
2017/06/09 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
vue如何判断dom的class
2018/04/26 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
Python批量转换文件编码格式
2015/05/17 Python
Python 正则表达式的高级用法
2016/12/04 Python
python实现简单神经网络算法
2018/03/10 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
资深地理教师自我评价
2013/09/21 职场文书
关于元旦的广播稿
2014/02/16 职场文书
安全月活动总结
2014/05/05 职场文书
学风建设主题班会
2015/08/17 职场文书
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers