博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈与队列的应用——计算表达式的值
阅读量:4216 次
发布时间:2019-05-26

本文共 1394 字,大约阅读时间需要 4 分钟。

在这里插入图片描述

#include
#include
#include
#include
#include
#include
using namespace std;struct node{ double num; char op; bool flag;};string str;stack
s;queue
q;map
op;void Change(){ // 中缀转后缀 node temp; for(int i = 0; i < str.length();) { if(str[i] >= '0' && str[i] <= '9') { // 处理数字 temp.flag = true; temp.num = str[i++] - '0'; while(i < str.length() && str[i] >= '0' && str[i] <= '9') { temp.num = temp.num * 10 + str[i] - '0'; i++; } q.push(temp); } else{ // 处理操作符 temp.flag = false; while(!s.empty() && op[str[i]] <= op[s.top().op]) { q.push(s.top()); s.pop(); } temp.op = str[i]; s.push(temp); i++; } } while(!s.empty()) { q.push(s.top()); s.pop(); }}double Cal(){ // 计算后缀表达式的值 double temp1, temp2; node cur, temp; while(!q.empty()) { cur = q.front(); q.pop(); if(cur.flag == true) s.push(cur); else{ temp2 = s.top().num; s.pop(); temp1 = s.top().num; s.pop(); temp.flag = true; if(cur.op == '+') temp.num = temp1 + temp2; else if(cur.op == '-') temp.num = temp1 - temp2; else if(cur.op == '*') temp.num = temp1 * temp2; else temp.num = temp1 / temp2; s.push(temp); } } return s.top().num;}int main(){ op['+'] = 1; op['-'] = 1; op['*'] = 2; op['/'] = 2; getline(cin,str); for(string::iterator it = str.end(); it != str.begin(); it--) { if(*it == ' ') str.erase(it); } while(!s.empty()) s.pop(); Change(); printf("%.2f\n", Cal()); return 0;}

转载地址:http://bhtmi.baihongyu.com/

你可能感兴趣的文章
java事务大总结(四)spring事务相关大总结
查看>>
驴妈妈管理的一点经验总结
查看>>
IOS开发学习的好资料大搜藏
查看>>
SSH的认证终结(无需密码的git操作或者ssh链接无需密码)
查看>>
Jetty 的工作原理以及与 Tomcat 的比较
查看>>
ssh-keygen的使用方法 注意权限问题
查看>>
zookeeper的server的集群配置实例[张振华-Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第一篇:互联网时代U盘化生存方式 【张振华.Jack】
查看>>
CentOS6.4配置Hadoop-2.6.0集群配置安装指南(经过实战演练)【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第二篇:专注的力量 [张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第三篇:我的舍与得的2014[张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第五篇:不要给自己找任何借口【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第七篇:请留意我们身边的风景 【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第八篇:坚持的力量 【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第九篇:春节那些事-过年回家不需要理由【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十一篇:马云乌镇40分钟演讲实录【张振华.Jack】
查看>>
Java并发编程从入门到精通 张振华.Jack --我的书
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十二篇:世界上最快的捷径【张振华.Jack】
查看>>
Android中Java代码和XML布局效率问题
查看>>
android TextView属性大全(转)
查看>>