0

0

php四则运算:中缀表达式转后缀表达式例子

php中文网

php中文网

发布时间:2016-05-23 13:07:31

|

2500人浏览过

|

来源于php中文网

原创

很多人对于四则运算可能不太明天了,下面我们来看看关于php四则运算,中缀表达式转后缀表达式例子,有需要了解的朋友可以一起来看看吧.

四则运算表达式,我们书面使用的叫做中缀表达式,而计算器,却更加喜欢后缀表达,括号优先级,加减乘除优先级等使得运算中缀四则表达式变得困难,这个时候引入了一种计算机喜欢的格式,叫做后缀表达式,本文以PHP代码,实现中缀表达式转后缀表达式的逻辑.

本文以PHP为代码环境,有人会说高级语言直接写表达式就好了,它们会算,可是他们为什么会算,怎么算的,还是需要把中缀表达式转为后缀表达式,因此本文代码只是模拟一个逻辑.

比如:传统的四则运算表达式(中缀表达式)是9 + ( 3 - 1 ) * 3 + 10 / 2,对应的后缀表达式就是9 3 1 - 3 * + 10 2 / +。

转换逻辑:一个字符一个字符的输入,如果是数字则直接输出,如果是左括号则直接入栈,如果是右括号则开始出栈,直到遇到第一次左括号为止,如果是加减乘除,则判断,如果栈顶也是符号,且输入的符号的优先级不高于栈顶的符号优先级,则全部出栈,否则该输入的符号入栈.

立即学习PHP免费学习笔记(深入)”;

TemPolor
TemPolor

AI音乐生成器,一键创作免版税音乐

下载
 0){ 
	        $key  = (count($stack) - 1); 
	        if(in_array($stack[$key], array('+', '-', '*', '/'))){ 
	            //该符号优先级不高于栈顶符号的 
	            if(checkPriority($str, $stack[$key]) != 1){ 
	                for($i=$key; $i>=0; $i--){ 
	                    if($stack[$i] == '('){ 
	                        break; 
	                    } 
	                    $newStrList .= $stack[$i] . ' '; 
	                    unset($stack[$i]); 
	                    $stack = array_values($stack); 
	                } 
	            } 
	        } 
	        //本次的符号入栈 
	        $stack[] = $str; 
	    }else{ 
	        $stack[] = $str; 
	    } 
	} 
	 
	/** 
	 * 判断运算符的优先级 
	 * @param $operatorA 
	 * @param $operatorB 
	 * @return A大于B返回1,A等于B返回0,A小于B返回-1 
	 */ 
	function checkPriority($operatorA, $operatorB){ 
	    switch($operatorA){ 
	        case '+': 
	        case '-': 
	            if($operatorB == '+' || $operatorB == '-'){ 
	                return 0; 
	            }else if($operatorB == '*' || $operatorB == '/'){ 
	                return -1; 
	            } 
	            break; 
	        case '*': 
	        case '/': 
	            if($operatorB == '+' || $operatorB == '-'){ 
	                return 1; 
	            }else if($operatorB == '*' || $operatorB == '/'){ 
	                return 0; 
	            } 
	            break; 
	        default: 
	            exit('error'); 
	    } 
	} 
	//栈 
	$stack = array(); 
	//待转换的表达式 
	$strList = '9 + ( 3 - 1 ) * 3 + 10 / 2'; 
	//新的表达式 
	$newStrList = ''; 
	$strList = explode(' ', $strList); 
	foreach($strList as $str){ 
	    if($str != ' '){ 
	        suffix($str, $stack, $newStrList); 
	    } 
	} 
	//数组反转 
	while($s = array_pop($stack)){ 
	    $newStrList .= $s . ' '; 
	} 
	echo $newStrList; 
	


永久地址:

转载随意~请带上教程地址吧^^

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

268

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

170

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

85

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Swoft2.x速学之http api篇课程
Swoft2.x速学之http api篇课程

共16课时 | 0.9万人学习

php初学者入门课程
php初学者入门课程

共10课时 | 0.6万人学习

第二十四期_前端开发
第二十四期_前端开发

共161课时 | 4.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号