公司动态

STL--后缀表达式之栈的特性与使用

📅 2026/7/21 18:20:22
STL--后缀表达式之栈的特性与使用
题目描述输入一行表示后缀表达式注意每个数或符号之间有一空格隔开最后输入表示输入结束。给定的表达式不超过 10001000 个字符注意本题中遇到除法运算只需要计算整除的结果不需要保留小数。输入将输入的后缀表达式求值后输出。测试数据保证表达式中整数数值 以及 整数之间进行加减乘除运算得到的结果都在 00~108108的范围内。输出输出一个整数表示该表达式的值。样例输入14 3 20 5 / * 8 - 输出18#includeiostream #includestack #includestring using namespace std; int main(){ stackint a; string s; int p,q,w; while(cin s s ! ){ if(s || s - || s * || s /) { q a.top(); a.pop(); p a.top(); a.pop(); if(s ) w p q; else if(s -) w p - q; else if(s *) w p * q; else if(s /) w p / q; a.push(w); } else a.push(stoi(s)); } cout a.top(); }后缀表达式求值的核心数据结构是栈规则非常简单从左到右逐个遍历表达式里的元素如果遇到数字就把它压入栈中如果遇到运算符就从栈顶弹出两个元素先弹出的是右操作数b后弹出的是左操作数a计算a 运算符 b的结果比如遇到就算ab遇到/就算a//b把计算得到的新结果重新压入栈中遍历结束之后栈里只会剩下一个元素这个元素就是整个后缀表达式的最终结果。这道后缀表达式求值题目核心用到了C STL里的std::stack容器适配器。push()把读取到的数字压入栈顶top()获取栈顶的元素拿到待运算的操作数pop()弹出已经参与完运算的栈顶元素最后遍历结束后栈里仅剩的元素就是最终的计算结果。