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 信息采集程序代码
Mar 17 PHP
PHP 各种排序算法实现代码
Aug 20 PHP
php中选择什么接口(mysql、mysqli)访问mysql
Feb 06 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
如何判断php数组的维度
Jun 10 PHP
解析php中memcache的应用
Jun 18 PHP
教大家制作简单的php日历
Nov 17 PHP
PHP序列化/对象注入漏洞分析
Apr 18 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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
Yii核心验证器api详解
2016/11/23 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
Python标准库内置函数complex介绍
2014/11/25 Python
python实现简易版计算器
2020/06/22 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
机械专业应届生求职信
2013/09/21 职场文书
婚庆司仪主持词
2014/03/15 职场文书
科技活动总结范文
2015/05/11 职场文书
离婚起诉书范本
2015/05/18 职场文书
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript