位置: 编程技术 - 正文

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实现批量删除)

  • 民营医院增值税优惠政策有哪些
  • 消费税基本特点?
  • 购买办公用品属于会计对象吗
  • 投标报名费开什么类别发票
  • 收据能入账抵税吗
  • 税收分类编码不可用是什么原因
  • 股东购买固定资产能算实收资本么
  • 可转换公司债券权益成分和负债成分
  • 计划成本材料采购明细账一般采用的格式是什么
  • 维修房产用的建材会计分录
  • 建筑工程地址
  • 印花税的计税依据是开票金额吗
  • 自然人股权转让涉税信息怎么填
  • 企业所得税汇算清缴退税账务处理
  • 停车场增加收入
  • 电商一般纳税人如何报税
  • 多交的增值税可以抵所得税吗?
  • 油漆的消费税
  • 分公司使用总公司业绩投标
  • 在window系统中哪些用户可以查看日志
  • 资产负债表期初和期末指的是什么
  • 公司聚餐计入什么会计科目
  • 苹果手机无法加入WiFi
  • 如何计算劳务费个人所得税
  • PHP:mb_ereg_search_setpos()的用法_mbstring函数
  • Win11 Build 22449.1000 预览版发布(附更新修复已知问题汇总)
  • 房屋权属转移是什么意思
  • php写一个简单的单例模式
  • 火灾烧毁物品如何取证
  • CodeIgniter针对数据库的连接、配置及使用方法
  • Windows下php+mysql5.7配置教程
  • php中的九大缓存技术
  • 论文resit
  • 车险开的发票里有代收车船税吗
  • 税费的审计
  • 为什么增值税最后的负税人是消费者企业还要尽量少交税
  • 员工办理健康证需要什么材料
  • 小规模纳税人如何界定
  • 结转个人承担的社保费分录
  • 财政总预算会计的特点
  • 销货方怎么开具购买方红冲的发票
  • db2数据库管理的工具
  • 广告制作交文化建设税吗
  • 餐饮业流水账表格
  • 电子商业承兑汇票的承兑有以下几种方式
  • 公司员工年薪如何发放
  • 暂估收入的会计分录怎么写
  • 开办费怎么做帐
  • 银行股分红划算吗
  • 暂不认证通知单 不在认证范围内
  • 大额装修费按几年摊销
  • 将备份的mdp文件导入数据库
  • centos rpm安装方法
  • win9有吗
  • centos双网卡配置
  • centos7如何添加光盘
  • PureVoice.exe - PureVoice是什么进程 有什么用
  • windows中常用的菜单有哪三个
  • 怎样把系统及软件迁移到固态
  • secondoption是什么意思
  • windows mobile10
  • linux防病毒措施
  • win8取消自动更新
  • windows10 禁用u盘
  • opengl环境光
  • perl $?
  • 深入解析抑郁症:什么是它的表现?别小看它的危害程度!
  • 一个简单的网页
  • python中子类继承父类的静态方法吗
  • unity 形变
  • javascript入门教程
  • python:\n
  • 使用jQuery制作动画与特效及插件的应用
  • 新能源免税申报,车辆类型怎么填
  • 百旺金赋跨月专票作废
  • 国家税务网上办税平台
  • 地税注销流程
  • 房产税的计税依据及税率
  • 财务审计报告哪个位置可以看出是否亏损
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设