php实现栈操作(不用push pop 库函数)
直接上代码
<?php
/*php不用库函数实现栈操作
* @author Geyaru 2019-04-20
*/
class stack{
private $top = -1; //栈指针初始方向
private $maxSize = 0;
private $stack;
/**初始化栈参数
*/
public function __construct($maxSize)
{
$this->maxSize = $maxSize;
}
/**入栈操作
*@param $val入栈的值
*/
public function push($val)
{
if($this->top == $this->maxSize-1)
{
return 0; //栈满
}
//入栈指针移动一个位置
$this->top++;
//值存入栈容器
$this->stack[$this->top] = $val;
}
/**出栈操作
*@return 出栈值
*/
public function pop(){
if($this->top==-1){
return 0; //栈空
}
//出栈值
$valTop = $this->stack[$this->top];
//移动栈指针
$this->top--;
return $valTop;
}
/**展示栈
*/
public function showSatck(){
if($this->top==-1){
return 0; //栈空
}
//循环输出 , 按先入后出 , 逆向循环输出
for($i = $this->top;$i<=0;$i--){
echo $this->stack[$i];
}
}
}
使用:
//模拟使用栈类
$stack = new Stack(5); //入栈
$stack -> push('芒果');
$stack -> push('橙子');
$stack -> push('龙眼');
$stack -> push('苹果');
$stack -> push('香蕉');
$stack -> push('香瓜'); //出栈
$stack -> pop(); //展示栈
$stack -> showSatck();
注: 原文参考地址https://cloud.tencent.com/developer/article/1178500
php实现栈操作(不用push pop 库函数)的更多相关文章
- 在堆栈中,push为入栈操作,pop为出栈操作
		
LinkedList提供以下方法:(ArrayList无此类方法) addFirst(); removeFirst(); addLast(); removeLast(); 在堆栈中,push为入栈操作 ...
 - Python模拟入栈出栈操作
		
目标: 1.编写菜单,提示用户操作选项(push,pop,view,quit) 2.规则:定义列表,先入栈,后出栈,后入栈,先出栈 1.模拟入栈.出栈操作 >>> list1 = [ ...
 - 数据结构---设计一个栈,push, pop, min 时间复杂度都是 O(1)
		
普通的栈,push, pop 操作的复杂度是 O(1), 但是如果要找出其中的最小值,则需要 O(N)的时间. 题目要求 min 复杂度也是 O(1), 做法便是 空间换时间,每一步栈的最小值都用一个 ...
 - js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip
		
push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( ite ...
 - 第一回写的用arraylist模拟栈操作
		
package hashMap; import java.util.ArrayList; import d.Student; /** * 用ArrayList模拟栈操作 * @author zhuji ...
 - c语言学习,模拟栈操作
		
1.stack.c模拟栈操作函数的实现 #include<stdio.h> #include<stdlib.h> ; static char *stack;//数据栈 ;//栈 ...
 - JavaScript中的栈及通过栈操作的实例
		
<script> /*栈操作*/ function Stack() { this.dataStore = []; this.top = 0; this.push = push; this. ...
 - 如何仅用递归函数和栈操作逆序一个栈——你要先用stack实现,再去改成递归——需要对递归理解很深刻才能写出来
		
/** * 如何仅用递归函数和栈操作逆序一个栈 * 题目: * 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1. * 将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就 ...
 - 数据结构C语言实现----出栈操作
		
代码如下: #include<stdio.h> #include<stdlib.h> typedef struct { char *base; char *top; int s ...
 
随机推荐
- CodeForces - 1025C 字符串处理,画一个圆。。。
			
题目链接: https://vjudge.net/problem/1810469/origin 题目大意: 给你一个字符串,中间切一刀,左右两边均反转,然后右边的串拼接到左边上. 思路: 比如 aa ...
 - Ubuntu安装并使用sogou输入法
			
1.下载搜狗输入法的安装包 下载地址为:http://pinyin.sogou.com/linux/ ,如下图,要选择与自己系统位数一致的安装包,我的系统是64位,所以我下载64位的安装包 2.按键C ...
 - Android ble蓝牙问题
			
(1)蓝牙回调安卓4.4的蓝牙回调是在异步线程中(不在主线程),若要在蓝牙回调中执行更新界面的操作,记得切换到主线程去操作 (2)三星手机兼容性问题connectGatt()方法在某些三星手机上只能在 ...
 - vee-validate的使用
			
官网地址:http://vee-validate.logaretm.com/ 这是一个插件Vue.js可以验证输入字段,显示错误,在一个简单而强大的方法.学习vee-validate,首先可以去阅读官 ...
 - PC_官网设计
			
1. 头部 header 固定 的两种方式 固定定位 内容区 包裹,使用 overflow: hidden; 2. 动画第二次起效 缺少动画初始参数 3. 隐藏元素 display: none; vi ...
 - Qt支持哪些硬件通信协议???
			
如题,广大使用Qt开发嵌入式的伙伴们知道Qt支持哪些硬件通信协议的开发???目前已知的串口和网络TCP/IP协议开发支持,其他的呢??? 欢迎留言交流!!!
 - idea创建的java web项目打包发布到tomcat
			
File-> Project Structure... 点击Artifacts->+号 点击Web Application:Archive->选择与你的项目对应的那一项Artifac ...
 - 网络流 ek
			
hdu3549 求最大流果题 ek算法 先bfs出一条流 然后通过不断地添加增广路 得到最大流(证明在算法书上都有) 增加了一个流 就加反向边 允许程序通过走方向边的方式进行“回滚” i^1 = i+ ...
 - dynamic 类型不能访问属性
			
x //解决方案ProjectTest.项目A里面public object r(){ ,name = "zf"}; } //解决方案ProjectTest.项目B里面 publi ...
 - MyCP-实现文件的复制以及进制转换
			
MyCP 一.设计思路 确定MyCP的要求 根据需求可知MyCP需要实现类似Linux下cp XXX1 XXX2的功能,且需要支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...