实现计算器4则运算算法-中缀表达式转后缀表达式
来源:互联网 发布:李洪成大宗易排盘软件 编辑:程序博客网 时间:2024/06/04 22:47
1.中缀表达式转后缀表达式
1)四则运算表达式中的括号必须匹配(判断表达式输入的有效性)
2)根据运算符优先级进行转换
3)转换后的表达式中没有括号
4)转换后可以顺序计算出最终结果
2.转换过程:
- 当前元素e为数字:输出
- 当前元素e为运算符:
1).与栈顶运算符进行优先级比较
-.小于等于:将栈顶元素输出,转1
-.大于:将当前元素e入栈
- 当前元素e为左括号:入栈
-当前元素e为右括号:
1.弹出栈顶元素并输出,直至栈顶元素为左括号
2.将栈顶的左括号从栈中弹出
伪代码:
while (!exp.isEmpty())
{
QString e = exp.dequeue();
if (isNumber(e))
{
输出 e;
}
else if (isOperator(e))
{
while( priority(e) <= priority(stack.top()))
输出栈顶元素, stack.pop();
stack.push(e);
}
else if (isLeft(e))
{
stack.push(e);
}
else if (isRight(e))
{
while( !isLeft(stack.top()))
{
输出栈顶元素, stack.pop();
}
从栈中弹出左括号, stack.pop();
}
}
关键点: 转换过程中左右括号是重要标志
-如何确保表达式中的括号能够左右匹配?
-合法的四则运算表达式中
- 括号匹配成对出现
- 左括号必然先于右括号出现
伪代码:
for (int i = 0 ; i < len; i++)
{
if ( exp[i] 为左括号)
{
exp[i] 入栈;
}
else if (exp[i] 为右括号)
{
if (栈顶元素为左括号)
{
将栈顶元素弹出;
}
else
{
匹配错误;
}
}
}
- 实现计算器4则运算算法-中缀表达式转后缀表达式
- 计算器实现---中缀表达式转后缀表达式
- 中缀表达式算法实现&中缀表达式转后缀表达式
- 计算器:中缀表达式转后缀表达式
- c++ 中缀表达式转后缀表达式 计算器
- 中缀表达式转后缀表达式算法及实现
- 【stack 实现前缀、后缀、中缀表达式运算】
- 中缀表达式转后缀表达式的实现
- 中缀表达式转后缀表达式之多项式计算器
- C语言简易计算器(中缀表达式转后缀表达式,通过堆栈实现)
- 中缀表达式转后缀表达式实现实例——Android计算器
- C/C++ 算法 中缀转后缀表达式实现1
- 中缀转后缀表达式
- 表达式中缀转后缀
- 中缀转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- LeetCode编程练习
- android之声音管理器AudioManager的使用
- 其实我是一名工程师,软件开发工程师,谢谢 ~
- Cookie和Session
- Qt无边框窗口,自由缩放窗口大小
- 实现计算器4则运算算法-中缀表达式转后缀表达式
- setContentView( )方法
- Android开发者2017年最值得关注的25个库
- 美好的一天,美好的心情,保持微笑,会有意想不到的人生!
- 内部类
- SecureCRT 8.0常用配置(背景色、字体等)教程
- SecureCRT的上传与下载教程
- java夯实基础-关键字
- Myeclipse修改servlet模板教程