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 ...
随机推荐
- Linux查看设备命令
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...
- web存储中cookie、session区别
http协议是一种无状态的协议,浏览器对服务器的每一次请求都是独立的.为了使得web能够产生一些动态信息,就需要保存”状态”,而cookie和session机制就是为了解决http协议无状态而产生.c ...
- 2017-11-4—LTspice
LTspice这个软件基本上上手就能用,没什么好说的. ADI的一些器件下载的spice文件可能是.cir的需要使用cadence的pspice软件打开后另存为.dir文件使用.(比如ad4096) ...
- EasyUI 分页 偶遇 问题
当 存在大量 重复 数据字段的 时候 entity.AsNoTracking().ToList().Skip((page.pageNumber - 1) * page.rows).Take(page. ...
- Java之为何配置环境变量
一.不要问一个程序员为什么命名是基础零(^_^) 二.Java为什么跨平台: 因为有java虚拟机,一个程序的运行必然要依赖于系统,java的跨平台是因为java虚拟机jvm把不同平台编写的代码编译成 ...
- 变量类型-Dict
教程:一:字典的创建 1:字典的介绍------>d = {key1:value1, key2:values2} (1)dictionary(字典) 是 Python 中最有用的数 ...
- 微信小程序底部tabbar
在 app.json 文件里面 : { "pages":[ "pages/index/index", "pages/logs/logs" ...
- yum安装mysql5.7
[root@ycj ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm //下载安装 ...
- CentOS7 64位安装mysql教程
参考链接:http://baijiahao.baidu.com/s?id=1597184796823517712&wfr=spider&for=pc https://www.cnblo ...
- css_文本溢出
1.单行文本溢出隐藏,显示省略号 2.多行文本溢出隐藏,显示省略号 1.只针对用webkit内核浏览器渲染页面才会有效果 2.(多行文本溢出隐藏,显示省略号)通用方法