栈的应用-后缀表达式
来源:互联网 发布:特朗普 奥巴马 知乎 编辑:程序博客网 时间:2024/06/05 04:38
我看的是殷人昆版的《数据结构》,在栈的应用中,介绍了后缀表达式,下面由我为大家稍微说明下后缀表达式的定义.
后缀表达式:也叫RPN或逆波兰表达式。它是中缀表达式的替代形式。参加运算的操作数总在操作符前面。
例如:中缀表达式 A+B*(C-D)-E/F 对应的后缀表达式为:ABCD-*+EF/-
详细的后缀表达式的过程如上图所示, 利用栈的特性生成后缀表达式。
<span style="font-size:18px;">//后缀表达式#include <iostream>#include <assert.h>using namespace std;#include <stack>enum Type{OP_NUM,OP_SYMBOL,ADD,SUB,MUL,DIV,};struct Cell{Type _type;int _num;};int RPNCount(Cell a[], size_t size){stack<int> s;for (size_t i = 0; i < size; ++i){if (a[i]._type == OP_NUM){s.push(a[i]._num);}else{int left, right;right = s.top();s.pop();left = s.top();s.pop();switch(a[i]._num){case ADD:s.push(left+right);break;case SUB:s.push(left-right);break;case MUL:s.push(left*right);break;case DIV:s.push(left/right);break;default:cout<<"Invalid OP_SYMBOL"<<endl;exit(-1);}}}return s.top();}int main(){Cell RPNArray[] = {{OP_NUM, 12},{OP_NUM, 3},{OP_NUM, 4},{OP_SYMBOL, ADD},{OP_SYMBOL, MUL},{OP_NUM, 6},{OP_SYMBOL, SUB},{OP_NUM, 8},{OP_NUM, 2},{OP_SYMBOL, DIV},{OP_SYMBOL, ADD}};cout<<RPNCount(RPNArray, sizeof(RPNArray)/sizeof(Cell))<<endl;system("pause");return 0;}</span>
如有不正确的地方,希望能够指出,大家一起学习,谢谢了。
1 0
- 栈的应用---后缀表达式
- 栈的应用-后缀表达式
- 栈的应用 ---后缀表达式
- 栈应用 - 后缀表达式的计算
- hdu 1237 后缀表达式 栈的应用
- 栈的应用1;后缀表达式求解
- 后缀表达式计算-栈的应用
- 栈的应用---(后缀表达式)
- 栈的应用-后缀表达式运算求值
- 栈的应用之后缀表达式
- C++栈的应用——后缀表达式求值、中缀表达式到后缀表达式的转换
- 栈的应用 后缀表达式求值 后缀表达式与中缀表达式的转换
- 栈的应用--后缀表达式和中缀表达式的实现
- 栈的应用:后缀表达式到中缀表达式的转换
- 栈应用(中缀表达式转后缀表达式并计算后缀表达式的值)
- 中缀表达式转后缀表达式求值(栈的应用)
- 栈的应用-中缀表达式转后缀表达式(C版)
- 中缀表达式转化为后缀表达式(栈的应用)
- accumulate连接string元素
- 灰度模板匹配算法
- C++ vector用法
- JAVA_HOME环境变量失效的解决办法
- 快速排序
- 栈的应用-后缀表达式
- DD语句位置参数
- 线程个人理解总结
- OpenCV学习笔记(19)双目测距与三维重建的OpenCV实现问题集锦(四)三维重建与OpenGL显
- ajax异步提交 页面请求
- hdu2084——数塔(dp水题)
- eclipse启动tomcat, http://localhost:8080无法访问
- Node.js的cluster模块用于使用多核CPU
- 我公司去年多计管理费用4000,请教会计分录怎么调整?