位置: 编程技术 - 正文

PHP栈的定义、入栈出栈方法及基于堆栈实现的计算器完整实例(栈定义代码)

编辑:rootadmin

推荐整理分享PHP栈的定义、入栈出栈方法及基于堆栈实现的计算器完整实例(栈定义代码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php定义接口,php栈与队列的区别,栈定义代码,php实现栈结构,php技术栈有哪些,php栈与队列的区别,php栈与队列的区别,php出栈函数,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了PHP栈的定义、入栈出栈方法及基于堆栈实现的计算器。分享给大家供大家参考,具体如下:

栈是线性表的一种,他的特点是后入先出,可以这么理解,栈就像一个存东西的盒子,先放进去的在最底层,后放进去的在上层,因为上层的东西把底层的东西压住了,下层的想要出去就必须把上层的先拿开才行。

介绍代码:

data类:就是存放数据的类。()就是要放入栈的东西stack类:是栈的类,整个对栈就在这个类中

主要方法:

入栈push_stack($data)检测栈是否已满,如果没满就让数据入栈。出栈pop_stack($data)检测栈是否为空,如果不空可以出栈读取栈顶元素top_stack()如果栈不空,返回当前栈顶部的数据。

下边是代码:

PHP栈的定义、入栈出栈方法及基于堆栈实现的计算器完整实例(栈定义代码)

运行结果:

案例:基于堆栈的高级计算器

当我们得到一个字符串运算式该如何去得出它的运算结果呢?

这时候我们就能使用堆栈的算法很巧妙的解决这个问题。

思路是这样的:(我们利用php函数substr循环去截取这个字符串运算式,依次取出这个字符串的值【我们得从第一个字符开始截取】,我们将开始截取位置设为一个循环增长的变量,初始化为【$index=0】),同时还需要创建两个栈,一个专门存放数字【$numStack】,一个存放运算符【$operStack】,我们还需要一个可以判断是否是运算符号的函数,将每次截取的值放入这个自定义函数中,返回一个可以区别为数字或运算符的标识,通过对这个标识的判断确定值是数字还是运算符,是数字就插入数栈,是运算符的话就插入符号栈。插入数栈的话可直接插入,但是符号栈的话需要特殊处理一下[【如果符号栈为空则直接插入,不为空:我们要将插入的符号与栈内的符号进行运算优先级比较(可以定义一个函数来判定符号优先级,把 * 和 / 假定为1 把 + 和 - 假定为0 假设数字大的优先级高,如此就能得出运算符优先级),当待插入的符号优先级小于等于栈内顶端的运算符优先级,就从数栈弹出两个值 符号栈弹出一个运算符 将它们进行运算】

下面是一个php的实例【参考自韩顺平老师的php算法教程】

运行结果:

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线一元函数(方程)求解计算工具:

PHP+JS实现批量删除数据功能示例 本文实例讲述了PHP+JS实现批量删除数据功能。分享给大家供大家参考,具体如下:表单formid="form2"name="form2"method="post"action="del_product.php"onsubmit="returncheckF(

php操作mysql获取select 结果的几种方法 如果用了MYSQL_BOTH,将得到一个同时包含关联和数字索引的数组。用MYSQL_ASSOC只得到关联索引(如同mysql_fetch_assoc()那样),用MYSQL_NUM只得到数字索引(如

php serialize()与unserialize() 不完全研究 serialize()和unserialize()在php手册上的解释是:serialize—Generatesastorablerepresentationofavalueserialize—产生一个可存储的值的表示unserialize—CreatesaPHPvaluefromastoredrepr

标签: 栈定义代码

本文链接地址:https://www.jiuchutong.com/biancheng/274953.html 转载请保留说明!

上一篇:PHP队列原理及基于队列的写文件案例(php排队系统)

下一篇:PHP+JS实现批量删除数据功能示例(php实现批量删除)

  • 注册资本印花税减半征收政策
  • 会计核算程序的含义
  • 对公账户的钱都是国有资产吗
  • 外经证错了已经交了税怎么办
  • 哪些会计科目需要结转
  • 金税三期账号是自己申请吗
  • 流动负债中的短期借款
  • 个人独资企业可以不开公户吗
  • 境外所得抵免税额是什么意思
  • 没有进项的产品开了发票怎么办
  • 简易征收是什么意思和一般纳税人
  • 土地闲置费可以税前扣除吗
  • 资金流量表的解读
  • 房产租赁中的免租期间需要交房产税吗
  • 公司买珠宝会计分录
  • 工资 转账
  • 增值税申报错误怎么处理
  • 车辆保险车船税怎么计算
  • 公司名下商品房卖给个人后房产税怎么交
  • 禁止局域网用户访问权限
  • 公司收到保险公司退保费怎么账务处理
  • 常见转移支付事项有哪些情况
  • 多缴的企业所得税如何处理
  • 上年度第四季度总结
  • 职工福利费的计提标准
  • debian10.9安装教程
  • window10下载cad2014
  • 怎么解决在澳洲吸烟
  • 携税宝费用可以抵扣增值税吗
  • linux更改指定用户的相关信息
  • php数组函数输出《咏雪》里有多少"片"字
  • 金融债券利息收入免税吗
  • php获取中文字符串长度
  • 腾讯云php
  • linux查看ssh服务开启
  • 锡特f8
  • 企业所得税营业外收入
  • 用php写的一个冒号的句子
  • 材料款零头抹掉怎么做凭证
  • 直连路由,静态路由
  • 浅谈一下新冠的好处
  • 汇算清缴补交所得税怎么做凭证
  • 企业一般账户开户申请理由
  • 商户待清算账户是什么
  • 费用在发生时确认而不考虑支付费用
  • day11-Servlet01
  • 企业印花税怎么入账
  • 公司收到保险公司赔款后又转给个人怎么处理
  • 简易征收销售额是什么意思
  • 主管盾和制单盾是是转账使用的U盾吗?
  • 年度财务报告和年度报告
  • 银行发放执行款多久到账
  • 付款申请单如何管理
  • 化妆品的成本利润率
  • 收款人是否应当承担还款责任
  • 申报和做账必须一致吗
  • 财务专用章的效力
  • 去年的会计凭证做错了,今年发现要怎么修改
  • sql server数据库数据备份
  • 电脑win10键盘失灵
  • Linux系统下Qt的基本安装和配置
  • win10 mobile下载
  • redhat磁盘挂载
  • mac的替换在哪里
  • pavprot.exe - pavprot是什么进程 作用是什么
  • peafsearch是什么程序
  • win7小技巧
  • 升级win10后
  • linux安装有几种方法
  • linux中使用find命令查找文件
  • 微信小程序倒计时乱跳
  • node.js常用命令
  • linux c 线程池
  • css回到页面顶部
  • linux中的shell命令
  • jq获取节点属性
  • 陕西新版电子税务局怎么使用
  • 个税更正申报如何导出大厅申报表
  • 贵州国家税务局陈开平
  • 高山白茶和普通白茶的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设