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 getsiteurl()函数
Sep 05 PHP
php Memcache 中实现消息队列
Nov 24 PHP
PHP关联链接常用代码
Nov 05 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
学习php开源项目的源码指南
Dec 21 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 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闭包(Closure)使用详解
2013/05/02 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
Python sys.path详细介绍
2013/10/17 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
关于多元线性回归分析——Python&SPSS
2020/02/24 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
python脚本第一行如何写
2020/08/30 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
英语教育专业毕业生求职信
2014/08/28 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
教师年度个人总结
2015/02/11 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
Oracle中update和select 关联操作
2022/01/18 Oracle