栈的应用之后缀表达式
来源:互联网 发布:理想国译丛 知乎 编辑:程序博客网 时间:2024/05/16 03:38
#include<iostream> #include<stack>using namespace std;enum Type{_SYMBOL, //操作符 _NUM, //操作数 ADD,SUB,MUL,DIV,};struct Cell{Type _type; //每个传进来的单元的类型 int _value; //操作数 };int CountRPN(Cell* rpn, size_t n){stack<int> s;for (size_t i = 0; i<n; i++){//判断传进来的是操作符还是操作数压栈if (_NUM == rpn[i]._type){s.push(rpn[i]._value);}if (_SYMBOL == rpn[i]._type){int right = s.top();s.pop();int left = s.top();s.pop(); //是操作符,就进行四则运算switch (rpn[i]._value){case 2:s.push(left + right);break;case 3:s.push(left - right);break;case 4:s.push(right*left);break;case 5:if (right == 0) //抛异常 {throw std::invalid_argument("参数错误!");//invalid_argument非法的参数,也是标准异常, }s.push(left / right);break;default:throw std::invalid_argument("参数异常");break;}}}return s.top();}void Test(){ //原来的式子是:17 //转换成后缀表达式:12 3 4 * -5 - 2 +Cell Rpn[] = {{ _NUM, },{ _NUM, 3 },{ _NUM, 4 },{ _SYMBOL, MUL },{ _SYMBOL, SUB },{ _NUM, 5 },{ _SYMBOL, SUB },{ _NUM, 2 },{ _SYMBOL, ADD },};try{cout << CountRPN(Rpn, sizeof(Rpn) / sizeof(Rpn[0])) << endl;}catch (exception&e) //捕获异常 {e.what();cout << "error" << endl;}}int main(){Test();system("pause");return 0;}
阅读全文
0 0
- 栈的应用之后缀表达式
- 栈的应用实践之中缀表达式转后缀表达式
- 栈的应用之中缀表达式转后缀表达式
- 栈的应用之中缀表达式转换为后缀表达式
- 栈的应用---后缀表达式
- 栈的应用-后缀表达式
- 栈的应用 ---后缀表达式
- 栈的应用之后缀表达式的计算(同时验证是否为合法的后缀表达式)
- 栈的应用之后缀表达式的求解
- 栈的应用之后缀表达式的求值
- 基于栈的应用之计算后缀表达式
- 栈的重要应用之中缀转后缀表达式算法
- 栈的应用实践之计算机执行后缀表达式
- 第六周--数据结构--队列的应用之后缀表达式(栈)
- 栈的应用之中缀表达式转后缀
- 栈应用 - 后缀表达式的计算
- hdu 1237 后缀表达式 栈的应用
- 栈的应用1;后缀表达式求解
- python 开始
- javaScript cannot set property '...' of null
- Python数据结构——解析树及树的遍历
- 程序内存中的堆和栈的区别
- 往文件中写int等数据类型数据 Writing an integer to a file with fputs()
- 栈的应用之后缀表达式
- 拥抱大数据
- 009大数据课程知识点小结
- Java Arrays类进行数组排序
- 最新的开始
- JAVASE之初识
- webpack 笔记,一个简单例子
- JavaScript专精系列(8)——事件机制原理
- 用单链表实现学生成绩管理