首页 > 其他分享 >中缀表达式转后缀

中缀表达式转后缀

时间:2022-11-12 15:12:58浏览次数:34  
标签:字符 送入 中缀 后缀 S2 S1 运算符 栈栈 表达式

例:(6+3*(7-4))-8/2

首先需要分配2个栈,一个作为临时存储运算符的栈S1(含一个结束符号),一个作为存放结果(逆波兰式)的栈S2(空栈),S1栈可先放入优先级最低的运算符#,注意,中缀式应以此最低优先级的运算符结束。可指定其他字符,不一定非#不可。从中缀式的左端开始取字符,逐序进行如下步骤:

  • (1)若取出的字符是操作数 (eg, 6, 3, 7 ),则分析出完整的运算数,该操作数直接送入S2栈。
  • (2)若取出的字符是运算符 (eg: ( * / - )),则将该运算符与S1栈栈顶元素比较,如果该运算符(不包括括号运算符)优先级高于S1栈栈顶运算符(包括左括号)优先级,则将该运算符进S1栈,否则,将S1栈的栈顶运算符弹出,送入S2栈中,直至S1栈栈顶运算符(包括左括号)低于(不包括等于)该运算符优先级时停止弹出运算符,最后将该运算符送入S1栈。
  • (3)若取出的字符是“(”,则直接送入S1栈顶。
  • (4)若取出的字符是“)”,则将距离S1栈栈顶最近的“(”之间的运算符,逐个出栈,依次送入S2栈,此时抛弃“(”。
  • (5)重复上面的1~4步,直至处理完所有的输入字符。
  • (6)若取出的字符是“#”,则将S1栈内所有运算符(不包括“#”),逐个出栈,依次送入S2栈。
  • 如果表达式结束,但栈中还有元素,将所有元素出栈,添加到后缀表达式中
  •  

     

     

     

标签:字符,送入,中缀,后缀,S2,S1,运算符,栈栈,表达式
From: https://www.cnblogs.com/arvin19/p/16883782.html

相关文章

  • Java Lambda 表达式
    (目录)一、说明Lambda表达式是什么Lambda表达式也称为闭包,是Java8发布的新特性Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)为什么要使用Lamb......
  • Jsp中EL表达式不起作用
    困扰了很久的JSP中的表达式被当成字符串处理,原因是出于版本不同,有些isELIgnored属性默认值为false,但有些默认为true;所以这里要手动配置isELIgnored的属性为false<%@pag......
  • Python语法糖之赋值表达式
    目录概述语法(海象运算符)为什么需要这个?避免重复写代码赋值表达式写法例子:连续输入命令行避免重复计算赋值表达式写法在推导式中应用例子:字典倒查本博客主要参考为北京大学......
  • 【正则】964- 正则表达式的括号如何使用?
    最近再一次重温老姚大佬的《JavaScript正则表达式迷你书》,并将核心知识点整理一遍,方便复习。原书写得非常棒,建议看下原书啦。  地址:https://github.com/qdlaoyao/js-re......
  • Java用正则表达式提取字符串中的字母和数字
    最新碰到个需求,需要从一个字符串中提取所有的数字和字符串,花了一些时间研究了下正则和相关类库后解决了,特此记录下代码如下:publicStringextractNumAndLetter(Strings......
  • 正则表达式 string.replaceAll替换花括号 报错illegal repetition near index 0
    1Stringregex="(\\$|\\#)\\{[^{}]*\\}";2List<WatcherTaskAgentFileMapping>watcherTaskAgentFileMappingList=agentFileQueryDao.queryWatcherAgentFileList(......
  • 2022.11.11 Lambda表达式
    2.Lambda表达式2.1概述Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关......
  • Java Lambda 表达式
    目录​​一、说明​​​​二、理解​​​​三、演示​​​​1.常规方法实现​​​​2.静态内部类​​​​3.局部内部类​​​​4.匿名内部类​​​​5.Lambda表达式​​​​......
  • [题解] [CSP-J 2022] 逻辑表达式 思路整理
    标签:分治。题目传送门:P8815[CSP-J2022]逻辑表达式题目大意给一个包含0、1、|、&、(、)的逻辑表达式(保证正确)。在计算表达式时采用“短路”策略:计算表达式a&b......
  • 使用注册表添加其他后缀文件
    添加其他后缀文件其他后缀的文件也可以按照上述方法进行添加,这里教给大家另一种比较快捷的方法就是通过注册表代码进行添加(这里以 .md 文件为例),在新建的 .reg 文件里......