关于PHP堆栈与列队的学习
在PHP中数组常被当作堆栈(后进先出:LIFO)与队列(先进先出:FIFO)结构来使用。PHP提供了一组函数可以用于push与pop(堆栈)还有shift与unshift(队列)来操作数组元素。堆栈与列队在实践中应用非常广泛。
我们可以先看下堆栈:
代码如下:
<?php
$arr = array();
array_push($arr,'aaa');
array_push($arr,'bbb');
$arr.pop();
print_r($arr);
?>
如果你打算把数组作为队列来使用(FIFO),你可以使用array_unshift()来增加元素,使用array_shift()删除:
代码如下:
<?php
$arr = array();
array_unshift($arr,'aaa');
array_unshift($arr,'bbb');
print_r($arr);
array_shift($arr);
print_r($arr);
?>
相关推荐
-
PHP基于堆栈实现的高级计算器功能示例
本文实例讲述了PHP基于堆栈实现的高级计算器功能.分享给大家供大家参考,具体如下: 当我们得到一个字符串运算式该如何去得出它的运算结果呢? 这时候我们就能使用堆栈的算法很巧妙的解决这个问题. 思路是这样的:(我们利用php函数substr循环去截取这个字符串运算式,依次取出这个字符串的值[我们得从第一个字符开始截取],我们将开始截取位置设为一个循环增长的变量,初始化为[$index=0]),同时还需要创建两个栈,一个专门存放数字[$numStack],一个存放运算符[$operStack],我们
-
PHP使用栈解决约瑟夫环问题算法示例
本文实例讲述了PHP使用栈解决约瑟夫环问题算法.分享给大家供大家参考,具体如下: 约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀.然后下一个重新报数,直到所有人都自杀身亡为止.然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏. <?php cla
-
用PHP解决的一个栈的面试题
前言 遇到一道面试题,题目大概意思如下: 使用两个普通栈实现一个特殊栈,使得pop.push.min三个函数的都是复杂度为O(1)的操作,min函数是获得当前栈的最小值. 初步想法 1.要实现min函数为(1)操作,当时第一想法是事先需要算好当前最小值,于是会想到用一个值来保存当前栈中最小值元素,然后push和pop操作的时候维护这个值.这样min,push都是O(1)了,但pop可不是,如果当前弹出的是最小值,需要从新寻找当前元素的最小值,这个就不是o(1)了. 2.而且上面方法没有用到另外一
-
PHP SPL标准库之数据结构栈(SplStack)介绍
栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈) SplStack就是继承双链表(SplDoublyLinkedList)实现栈. 类摘要如下: 简单使用如下: //把栈想象成一个颠倒的数组 $stack = new SplStack(); /** * 可见栈和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为: * (1)SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyL
-
基于PHP实现栈数据结构和括号匹配算法示例
本文实例讲述了基于PHP实现栈数据结构和括号匹配算法.分享给大家供大家参考,具体如下: 栈,体现的是后进先出,即LIFO.队列,体现的是先进先出,即FIFO. 栈操作: array_pop() //尾出 array_push() //尾进 或 array_shift()//头进 array_unshift()//头出 用例:验证一个数学算式是否正确,比如{2*3[x*y+5+m*(i-j)/3]+k*(4+(t+9))}. 分析:对于一个算式的正确与否,就是体现在,各种括号的匹配上,括号完全匹配
-
php array_pop()数组函数将数组最后一个单元弹出(出栈)
复制代码 代码如下: <?php /*函数array_pop():将数组最后一个单元弹出(出栈) * 1.语法:mixed array_pop ( array &array ) * 2.描述: 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一.如果 array 为空(或者不是数组)将返回 NULL. * 3.注意事项: * 3.1. */ echo "****************************************************
-
PHP中使用数组实现堆栈数据结构的代码
在堆栈中,最后压入的数据(进栈),将会被最先弹出(出栈). 即在数据存储时采用"先进后出"的数据结构. PHP中,将数组当做一个栈,主要是使用array_push()和array_pop()两个系统函数来完成. 入栈主要是利用array_push()函数向第一个参数的数组尾部添加一个或多个元素,然后返回新数组的长度,示例如下: 复制代码 代码如下: <?php $zhan=array("WEB");//声明一个数组当做栈 array_push($zhan,&q
-
php线性表的入栈与出栈实例分析
本文实例讲述了php线性表的入栈与出栈用法.分享给大家供大家参考.具体如下: <?php $stack = array("Simon", "Elaine"); //定义数组 array_push($stack, "Helen", "Peter"); //入栈 print_r($stack); ?> <?php $stack = array("Simon", "Elaine&quo
-
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
复制代码 代码如下: <?php /*函数array_push():将一个或多个单元压入数组的末尾(入栈) * 1.语法:int array_push ( array &array, mixed var [, mixed ...] ) * 2.描述:将 array 当成一个栈,并将传入的变量压入 array 的末尾.array 的长度将根据入栈变量的数目增加. * 3.注意事项: * 3.1.该函数返回数组新的元素的总数 * 3.2.如var为数组,则该数组是作为一个数组变量入栈到数组栈中,
-
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
array_push() 定义和用法 array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度. 该函数等于多次调用 $array[] = $value. 语法 array_push(array,value1,value2...)参数 描述 array 必需.规定一个数组. value1 必需.规定要添加的值. value2 可选.规定要添加的值. 提示和注释 注释:即使数组中有字符串键名,您添加的元素也始终是数字键.(参见例子 2) 注释:如果用 a
-
PHP栈的定义、入栈出栈方法及基于堆栈实现的计算器完整实例
本文实例讲述了PHP栈的定义.入栈出栈方法及基于堆栈实现的计算器.分享给大家供大家参考,具体如下: 栈是线性表的一种,他的特点是后入先出,可以这么理解,栈就像一个存东西的盒子,先放进去的在最底层,后放进去的在上层,因为上层的东西把底层的东西压住了,下层的想要出去就必须把上层的先拿开才行. 介绍代码: data类:就是存放数据的类.()就是要放入栈的东西 stack类:是栈的类,整个对栈就在这个类中 主要方法: 入栈push_stack($data)检测栈是否已满,如果没满就让数据入栈. 出栈po
随机推荐
- Python正则表达式教程之一:基础篇
- Powershell脚本中包含文件资源的例子
- 详解Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作
- Java使用JDBC实现Oracle用户认证的方法详解
- Java中SpringSecurity密码错误5次锁定用户的实现方法
- Python __getattr__与__setattr__使用方法
- javascript作用域、作用域链(菜鸟必看)
- asp.net下用Aspose.Words for .NET动态生成word文档中的数据表格的方法
- 提高PHP编程效率的方法
- MySQL 修改数据库名称的一个新奇方法
- php写入数据到CSV文件的方法
- JavaScript 总结几个提高性能知识点(推荐)
- 符合W3C网页标准的iframe标签的使用方法
- Python打包文件夹的方法小结(zip,tar,tar.gz等)
- jquery选择器需要注意的问题
- IIS无法显示中文名称图片问题的解决方法
- Win 2003共享“还原”技术
- 图解安装windows2003
- Android RecyclerView 复用错乱通用解法详解
- java中Struts2 的文件上传和下载示例