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安全编程之加密功能
Oct 09 PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 PHP
php一些公用函数的集合
Mar 27 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
9个PHP开发常用功能函数小结
Jul 15 PHP
php实现encode64编码类实例
Mar 24 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 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中执行系统外部命令
2006/10/09 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
JavaScript 指导方针
2007/04/05 Javascript
js 对象是否存在判断
2009/07/15 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
在Python中使用dict和set方法的教程
2015/04/27 Python
Python中的__init__作用是什么
2020/06/09 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
详解python 内存优化
2020/08/17 Python
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
Java基础知识面试题
2014/03/25 面试题
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript