双栈计算求值表达式
来源:互联网 发布:域名在哪续费 编辑:程序博客网 时间:2024/06/15 18:17
#include <iostream>#include <string>#include <stack>int main(){std::string s = "((1+(2+3)*(4*5)))+1)";std::stack<char> stack_c;std::stack<int> stack_i;int value = 0;for (size_t i = 0; i < s.size(); ++i) {if (s[i] <= '9' && s[i] >= '0' ) {std::string x = "";x += s[i];stack_i.push(atoi(x.c_str()));}else if (s[i] != '(' && s[i] != ')')stack_c.push(s[i]);else if (s[i] == ')') {int v = stack_i.top();char c = stack_c.top();stack_i.pop();stack_c.pop();if (c == '+') {v = stack_i.top() + v;stack_i.pop();}else if (c == '*') {v = stack_i.top() * v;stack_i.pop();}stack_i.push(v);value = v;}elsecontinue;}std::cout << value << std::endl;}
很简单的一个Dijkstra的双栈算术表达式求值算法
将符号')'和‘+’、‘-’、‘*’、‘/’放入一个栈,数值放入另外一个栈,忽略'('。
一旦遇到‘)’,将其弹出,并且分别从两个栈弹出两个数值,一个符号,进行数值运算,并将新得到的数值压栈。
阅读全文
0 0
- 双栈计算求值表达式
- 表达式求值计算
- 双栈算术表达式求值
- 使用双栈实现表达式求值
- 使用双栈实现表达式求值
- 双栈结构_表达式求值
- 双栈算术表达式求值算法
- 双栈算术表达式求值算法
- 算法 -- 双栈算术表达式求值算法
- Dijkstra双栈算术表达式求值算法
- 双栈算数表达式求值算法
- Dijkstra双栈算术表达式求值算法
- 栈表达式求值程序
- 栈实现表达式求值
- 栈:表达式求值
- <数据结构>栈-表达式求值
- NYOJ35 表达式求值 【栈】
- 栈应用 表达式求值
- 版本回滚
- 网站优化:title,keyword,description等重要标签SEO方法
- git解决冲突
- CentOS7虚拟机开机后提示ABRT has detected 1 problem(s)…… 2017-01-06 11:02:31 标签: CentOS7 ABRT CentOS7虚拟机开机
- 单例模式的延迟加载
- 双栈计算求值表达式
- PHP7扩展开发之字符串处理
- git分支管理策略
- 发送有序广播
- Arduino UNO的原理图
- 单例模式2
- opencv第一个程序
- Android 动画:你真的会使用插值器与估值器吗?(含详细实例教学)
- python交互模式和命令行模式