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 相关文章推荐
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
PHP简单遍历对象示例
Sep 28 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
php扩展开发入门demo示例
Sep 23 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 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
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
php多线程并发实现方法
2016/09/30 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
关于js类的定义
2011/06/28 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
JavaScript验证知识整理
2017/03/24 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
快速入手Python字符编码
2016/08/03 Python
python机器学习实战之树回归详解
2017/12/20 Python
python ---lambda匿名函数介绍
2019/03/13 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
计算机个人求职信范例
2014/01/24 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js