中缀表达式的计算(只包含四则运算与括号)

2024-03-27 17:32

本文主要是介绍中缀表达式的计算(只包含四则运算与括号),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在上周的ACM入门课上,老师为了计算中缀表达式而引入了后缀表达式的概念,并布置作业:输入一个中缀表达式,输出其后缀表达式。

        如输入:5+2*(3+4)*5-3      输出:5 2 3 4 + * 5 * + 3 -

        我在解决了这个问题后,忽然就想到不如就顺便解决最终问题。

        分析:输入的是中缀表达式,要输出其运算结果,需要考虑到各种运算优先级问题,所以应先应用上面的结果,把中缀表达式转化为后缀表达式,再计算后缀表达式。

        步骤:1.转化:我首先想的是没有括号的情况,因为括号不是运算符,只是改变运算优先级的。鉴于这里要把得到的后缀表达式保存下来,所以用一个数组stored保存,遇到数字就直接保存。关键是遇到运算符的情况。因为非常有可能后面的比前面的更优先运算,满足后进先出特点,用栈stack保存运算符。若当前运算符和栈顶运算符优先级相同,则可以看做栈顶的运算符先做;若当前的运算符比栈顶的运算符优先级低,则栈内的运算应全部做完,再轮到当前的运算符;其他情况则不操作。上述三种情况处理后都要将当前运算符压入栈。

                                    很明显,运算符只有两种优先级,那么不难得到栈内元素最多就是两个。因为若优先级相同,则输出前一个,压入当前,即不改变栈的元素个数,而优先级较大,则直接压入栈,但不可能连续出现较大的情况,所以最多只可能多一个即两个。而较小就清空了。

                                    这样

这篇关于中缀表达式的计算(只包含四则运算与括号)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/852890

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Java Lambda表达式的使用详解

《JavaLambda表达式的使用详解》:本文主要介绍JavaLambda表达式的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言二、Lambda表达式概述1. 什么是Lambda表达式?三、Lambda表达式的语法规则1. 无参数的Lambda表

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

SpringBoot @Scheduled Cron表达式使用方式

《SpringBoot@ScheduledCron表达式使用方式》:本文主要介绍SpringBoot@ScheduledCron表达式使用方式,具有很好的参考价值,希望对大家有所帮助,如有... 目录Cron 表达式详解1. 表达式格式‌2. 特殊字符解析3. 常用示例‌4. 重点规则5. 动态与复杂场景‌

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在