使用栈存储后缀表达式
来源:互联网 发布:js调用function函数 编辑:程序博客网 时间:2024/05/17 00:12
12*(3+4)-6+8/2的后缀表达式为:12 3 4 + * 6 - 8 2 / +
使用栈模拟存储后缀表达式:
#include<iostream>#include<stack>using namespace std;enum OPERATOR//使用枚举类型{ DATA, ADD, SUB, MUL, DIV};struct Cell{ OPERATOR _operator;//符号 int _data;//数据};int CalaRPN(Cell* cell,size_t size){ stack<int> s; for(size_t idx=0;idx<size;++idx) { if(cell[idx]._operator==DATA) s.push(cell[idx]._data); else { int right=s.top(); s.pop(); int left=s.top(); s.pop(); switch(cell[idx]._operator) { case ADD: s.push(left+right); break; case SUB: s.push(left-right); break; case MUL: s.push(left*right); break; case DIV: if(0==right) { cout<<"除数为0"<<endl; abort(); } s.push(left/right); break; default: cout<<"非法操作"<<endl; break; } } } return s.top();}int main(){ Cell cell[]={ {DATA,12}, {DATA,3}, {DATA,4}, {ADD,0}, {MUL,0}, {DATA,6}, {SUB,0}, {DATA,8}, {DATA,2}, {DIV,0}, {ADD,0}}; cout<<CalaRPN(cell,sizeof(cell)/sizeof(cell[0]))<<endl; return 0;}
0 0
- 使用栈存储后缀表达式
- 顺序栈存储----后缀表达式
- 使用栈计算后缀表达式
- 使用后缀表达式计算表达式
- 中缀表达式转换为后缀表达式(栈的使用)
- 中缀表达式转换为后缀表达式(栈的使用)
- 中缀表达式转换为后缀表达式(栈的使用)
- 中缀表达式转换为后缀表达式(栈的使用)
- 中缀表达式转换为后缀表达式(栈的使用)
- 栈的使用-中缀表达式转后缀表达式
- 使用栈完成中缀表达式转后缀表达式
- 使用栈解决逆波兰表达式(后缀表达式)
- 后缀表达式(栈)
- 后缀表达式与栈
- 栈-运算后缀表达式
- 栈与前/后缀表达式
- 栈的应用---后缀表达式
- 后缀表达式 栈的运用
- acm之Dinner
- 使用react native制作的一款网络音乐播放器
- Hadoop2.6.0 mac 安装
- 两个数求不能组合成的最大数
- HTML5复习 (13)
- 使用栈存储后缀表达式
- 激光SLAM导航系列(三)Costmap(代价地图)(上)
- 设计模式——状态模式
- 我编写了一个怪物 —— “消沉的程序员”漫画赏析
- 迭代器(Iterator)
- HTML页面跳转的5种方法
- 动态规划:求一个序列的最大子序列和
- 在jsp中动态的改变include静态引入的页面
- 五、颜色空间缩减