前缀,中缀,后缀表达式转换
来源:互联网 发布:造价大数据 编辑:程序博客网 时间:2024/04/30 10:11
title: 前缀,中缀,后缀表达式转换
date: 2017-09-10 19:45:09
categories: ‘technology’
tags:
- ‘算法’
1 基本概念
在计算机中表达式有三种,前缀表达式(波兰式),中缀表达式,后缀表达式(逆波兰式)。
如表达式:a+b*(c-d)-e/f
前缀表达式:-+a*b-cd/ef
中缀表达式:a+b*(c-d)-e/f
后缀表达式:abcd-*+ef/-
2 转换原理
原理不难,我们遇到遇到操作数的时候直接输出,当遇到操作符(包括‘(’,‘+’,‘-’,‘*’,‘/’)的时候,我们需要把符号压入到栈中,
- 2.1 当遇到‘)’的时候:
我们需要依次从栈顶弹出符号,直到遇到‘(’,并且要将‘(’弹出。如:(a*(b+c)),栈中的是(*(+,当遇到‘)’的时候,我们要弹出‘+’,‘(’。
- 2.2 当遇到‘(’的时候
此时没什么要说的,直接压栈。
- 2.3 当遇到‘+’,‘-’,‘*’,‘/’的时候:
我们要把栈顶元素的符号的优先级跟输入的符号的优先级进行对比,如果栈顶优先级高的话,我们就要把栈顶元素依次弹出,直到栈顶的优先级低于输入的优先级或者栈空。
如:a+b+c+d,跟a+b*c+d得到的符号顺序就不一样,原因就是这个优先级的问题。
- 2.4 当遇到操作数的时候:
毫无疑问,直接输出
例题:
简便方法
中缀表达式(a+b) * c * (d-e/f) 转成前缀,后缀表达式
第一步:按照运算符的优先级对所有的运算单位加括号:式子变成了:((a+(b*c))-(d+e))
第二步:转换前缀与后缀表达式
- 前缀:把运算符号移动到对应的括号前面,则变成拉:-( +(a *(bc)) +(de)) 。把括号去掉:-+a*bc+de 前缀式子出现
- 后缀:把运算符号移动到对应的括号后面,则变成拉:((a(bc)* )+ (de)+ )- 。把括号去掉:abc*+de+- 后缀式子出现
阅读全文
0 0
- 前缀,中缀,后缀表达式转换
- 前缀、中缀、后缀表达式转换
- 前缀,中缀,后缀表达式转换
- 中缀表达式 前缀表达式 后缀表达式 转换
- 中缀表达式 转换为 前缀 后缀表达式
- 中缀表达式与前缀,后缀的转换
- 中缀、前缀、后缀表达式之间的转换
- C++中的前缀、中缀、后缀表达式转换
- 前缀、中缀、后缀表达式转换详解
- 前缀---中缀--后缀 表达式的相互转换
- 前缀中缀后缀表达式及其互相转换
- 前缀、中缀、后缀表达式转换详解
- 中缀 前缀 后缀表达式 相互转换
- 前缀、中缀、后缀表达式转换详解
- 中缀,前缀,后缀表达式
- 前缀、中缀、后缀表达式
- 前缀、中缀、后缀表达式
- 前缀、中缀、后缀表达式
- 网易测试面试
- 客户机操作系统已禁用cpu
- python3列表
- 计算机程序的思维逻辑(挺好的文章列表)
- 一遍记住Java常用的八种排序算法与代码实现
- 前缀,中缀,后缀表达式转换
- ios不能自动播放音频
- 基础练习 十进制转十六进制
- top命令结果分析
- 基于pickle模块的学生管理系统
- 线程池的使用
- python3 yield from用法
- javascript基本知识整理
- 九九乘法表