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

中缀表达式转前后缀表达式

时间:2023-10-17 21:34:43浏览次数:31  
标签:中缀 后缀 转前 栈顶 操作符 字符串 表达式

将中缀表达式a/(b+c*d)-e/f转换为后缀表达式的步骤如下:

1. 创建一个空栈和一个空字符串,用于存储结果。
2. 从左到右遍历中缀表达式的每个字符:
   - 如果是操作数(字母或数字),直接添加到结果字符串中。
   - 如果是操作符:
     - 如果栈为空,或者栈顶操作符为左括号"(",则将当前操作符入栈。
     - 否则,比较当前操作符与栈顶操作符的优先级:
       - 如果当前操作符优先级大于栈顶操作符,将当前操作符入栈。
       - 否则,将栈顶操作符出栈并添加到结果字符串中,直到栈为空或栈顶操作符优先级小于当前操作符。
     - 最后,将当前操作符入栈。
   - 如果是左括号"(",将其入栈。
   - 如果是右括号")",则将栈中的操作符出栈并添加到结果字符串中,直到遇到左括号"(",将左括号出栈但不添加到结果字符串中。
3. 遍历完整个中缀表达式后,将栈中剩余的操作符依次出栈并添加到结果字符串中。
4. 最终得到的结果字符串就是后缀表达式。

根据以上步骤,将中缀表达式a/(b+c*d)-e/f转换为后缀表达式的结果是:a b c d * + / e f / -


 

将中缀表达式a/(b+c*d)-e/f转换为前缀表达式的步骤如下:

1. 反转中缀表达式,使操作符的顺序颠倒。
2. 将反转后的中缀表达式转换为后缀表达式。
3. 再次反转后缀表达式,得到前缀表达式。

以下是将中缀表达式a/(b+c*d)-e/f转换为前缀表达式的具体步骤:

1. 反转中缀表达式:f/e-a/(d*c+b)
2. 将反转后的中缀表达式转换为后缀表达式:f e / a d c * b + -
3. 再次反转后缀表达式,得到前缀表达式:- / f e + a * d c b

因此,将中缀表达式a/(b+c*d)-e/f转换为前缀表达式的结果是:- / f e + a * d c b

 

标签:中缀,后缀,转前,栈顶,操作符,字符串,表达式
From: https://www.cnblogs.com/simpleset/p/17770750.html

相关文章

  • 北林OJ基于栈的后缀表达式求值
    思路1:(较易理解)#include<iostream>#include<iomanip>usingnamespacestd;#defineOK1#defineERROR0#defineMaxSize100typedefdoubleElemType;//定义栈_顺序栈structStack{ ElemType*top; ElemType*base; intstacksize;};intIsFull(Stacks);i......
  • 10_逆波兰表达式求值
    逆波兰表达式求值给你一个字符串数组tokens,表示一个根据逆波兰表示法表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。对应于leetcode150注意:有效的算符为'+'、'-'、'*'和'/'。每个操作数(运算对象)都可以是一个整数或者另一个表达式。两个整数......
  • 正则表达式 and re 模块
    元字符:^  $  []  {}  ()  .  \  ?  *  +^只能放在正则表达式的前方,且也只能从目标字符串的首部开始匹配$只能放在正则表达式的后方,且也只能从目标字符串的尾部开始匹配[]字符集{}匹配字符的长度范围,为一个闭区间()其中字符串代表一个整体......
  • 正则表达式
    1、正则表达式(RegularExpression)功能是⽤于处理⽂本,包括,查找,替换,删除。2、在java中,正则表达式是⼀个专门⽤于处理⽂本的对象。3、正则表达式表现是⼀个字符串,是普通字符和特殊字符共同构成。4、普通字符包括原义字符和⾮打印字符。原义字符:指字⾯的含义保存不变......
  • CPP(正则表达式)
    例如下面的代码,使用正则表达式去搜索test_str中第一个内容放回results中regex_search(test_str,results,r);所以我们需要构造正则表达式r构造方法:例如我们需要搜索的目标是std::string类型的test_str="receiptfriendtheifreceive";则我们需要构造std::stringpat......
  • 逆波兰表达式与迷宫算法
    中项表达式是人类的算术思路,逆波兰表达式是机器结合栈结构完成算式解析的最佳结构。文章链接:https://zhuanlan.zhihu.com/p/357982040迷宫算法文章链接:https://blog.csdn.net/m0_53157173/article/details/114486303......
  • AX2012 正则表达式返回所有匹配的Match对象
    staticvoidTestMatches(Args_args){System.Text.RegularExpressions.MatchCollectionregExMatchs;System.Text.RegularExpressions.MatchregExMatch;System.Collections.IEnumeratormatchesEnum;Str1260......
  • lambda表达式基本使用和语法
    一、操作集合两个结合数据获取相同部分和不同部分 List<Integer>list1=Arrays.asList(1,2,3,4,5);List<Integer>list2=Arrays.asList(4,5,6,7,8);test.notRepeat(list1,list2); /***获取集合中重合/不重合部分*不重合部分:!li......
  • 正则表达式-反向引用
    正则基础之——反向引用-石磊-博客园(cnblogs.com)主要是匹配文本重复另外,以前没有注意过小括号除了可以捕获,还可以把几个条件绑定成一个整体匹配前面的子表达式零次或一次。例如,do(es)?可以匹配"do"、"does"、"doxy"中的"do"和"does"。?等价于{0,1}。......
  • Shell(二):正则表达式
    1、元字符Shell的表达式是一串字符。元字符(Metacharacters)是用来阐释字符表达式意义的字符。元字符就是描述字符的字符,用于对字符表达式的内容、转换及各种操作信息进行描述。2、正则表达式正则表达式是由一串字符和元字符构成的字符串,简称RE(RegularExpression)。......