中缀表达式转换成后缀表达式(只适用于加减乘除运算)
1 #include <iostream> 2 #include <stack> 3 #include <cctype> 4 5 using namespace std; 6 7 //获取符号的优先级 8 int getPriority(char c) 9 { 10 int priority = -1; 11 switch (c) { 12 case '+': 13 priority = 1; 14 break; 15 case '-': 16 priority = 1; 17 break; 18 case '*': 19 priority = 2; 20 break; 21 case '/': 22 priority = 2; 23 break; 24 case '(': 25 priority = 3; 26 break; 27 default: 28 break; 29 } 30 return priority; 31 } 32 33 34 int main() 35 { 36 char c; 37 stack<char> s; 38 cin >> c; 39 while (c != '#') 40 { 41 while (isdigit(c)) 42 { 43 cout << c; 44 cin >> c; 45 if(!isdigit(c) && c != '#') 46 cout << ' '; 47 48 } 49 if (c == ')') 50 { 51 //1.弹出元素并输出直到'(' 52 while (s.top() != '(') 53 { 54 cout << s.top() << ' '; 55 s.pop(); 56 } 57 //2.将"("也出栈 58 s.pop(); 59 } 60 else 61 { 62 // 下面是普通操作符的情况 63 // 1.弹出栈元素直到发现优先级更低的元素 64 while (!s.empty() && getPriority(c) <= getPriority(s.top()) && s.top() != '(') 65 { 66 cout << s.top() << ' '; 67 s.pop(); 68 } 69 //将本操作符入栈 70 s.push(c); 71 } 72 cin >> c; 73 } 74 while (!s.empty()) 75 { 76 cout << s.top() << ' ' ; 77 s.pop(); 78 } 79 cout << endl; 80 return 0; 81 }
【推荐】国内首个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相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南