后缀算术表达式
后缀表达式的特点如下:
1、后缀表达式的操作数与中缀表达式的操作数先后次序相同,而运算符的先后次序不同。
2、后缀表达式中没有括号,而且运算符没有优先级。
3、后缀表达式计算过程严格按照从左到右的顺序进行。
例如:
算术表达式a+(b-c)*d的后缀式是:abc-d*+
在输入的时候出了问题:
string s;
cin>>s; 不能输入空格
所以要用getline
getline(cin,s);
头文件 string 或者istream
#include<iostream> #include<string> #include<istream> #include<cstring> #include<iomanip> using namespace std; typedef struct StackNode *LStack; struct StackNode { double nu; LStack next; }; void Init(LStack &s) { s = new StackNode; s = NULL; } void Pushnu(LStack &s, double c) { LStack p = new StackNode; p->nu = c; p->next = s; s = p; } void Pop(LStack &s) { LStack p; p = s; if (!s->next) s = NULL; else s = s->next; delete p; } double GetTopnu(LStack &s) { return s->nu; } int main() { string s; s = ""; cout << setiosflags(ios::fixed) << setprecision(2); while (s != "=") { getline(cin, s); char *ptr; int length = 0; LStack p;//s1是数字,s2是运算符 Init(p); for (int i = 0; i <s.size(); i++) { if (s[i] >= '0'&&s[i] <= '9') { Pushnu(p, s[i] - 48); } else if (s[i] == '+') { double a, b; a = GetTopnu(p); Pop(p); b = GetTopnu(p); Pop(p); double c; c = a + b; Pushnu(p, c); } else { if (s[i] == '-') { double a, b; a = GetTopnu(p); Pop(p); b = GetTopnu(p); Pop(p); double c; c = b - a; Pushnu(p, c); } else if (s[i] == '*') { double a, b; a = GetTopnu(p); Pop(p); b = GetTopnu(p); Pop(p); double c; c = b * a; Pushnu(p, c); } else { if (s[i] == '/') { double a, b; a = GetTopnu(p); Pop(p); b = GetTopnu(p); Pop(p); double c; c = b / a; Pushnu(p, c); } else if (s[i] == '=') break; else if (s[i] == ' ') { continue; } } } } if (s == "=") return 0; cout << p->nu << endl; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码