标签:运算符 操作数 出栈 中缀 问题 括号 3.2 优先级 表达式
准备两个栈:
一个操作数栈,一个运算符栈。
1.遇到操作数直接压栈(操作数栈)
2.遇到左括号直接压栈(运算符栈)
3.遇到基本运算符分两种情况讨论:
3.1.运算符栈栈顶元素优先级大于等于当前运算符优先级或者栈顶元素为左括号——直接压栈(运算符栈)
3.2.运算符栈栈顶元素优先级小于当前运算符优先级
3.2.1运算符栈循环出栈,直到栈顶元素优先级小于等于当前运算符优先级或者栈顶元素为左括号(同3.1)。
3.2.2运算符栈每出栈一次,操作数栈出栈两次,且将结果立刻压栈(操作数栈)
4.遇到右括号
4.1运算符栈循环出栈,直到遇到左括号为止(左括号也要出栈)
运算符栈每出栈。。。(同3.2.2)
经过上述操作后,就可以得到一个后缀表达式(双栈)
这个过程不细说了,可参考 后缀表达式的值 。
标签:运算符,操作数,出栈,中缀,问题,括号,3.2,优先级,表达式 来源: https://www.cnblogs.com/sxrekord/p/infix_expression_problem.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。