本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】AcWing6027. 后缀表达式的值 - AcWing题库【题目描述】从键盘读入一个后缀表达式字符串只含有0 − 9 0-90−9组成的运算数及加、减-、乘*、除/四种运算符。每个运算数之间以及运算数和运算符之间用单个空格隔开不需要判断给你的表达式是否合法。以作为结束标志。比如16–9*(43)转换成后缀表达式为16 9 4 3 *-在字符数组 中的形式为栈中的变化情况运行结果为− 47 -47−47。【输入】一个字符串表示给定后缀表达式。【输出】一个整数表示给定后缀表达式的值。【输入样例】16 9 4 3 *-【输出样例】-47【算法标签】#栈#【代码详解】#includebits/stdc.husingnamespacestd;typedeflonglongLL;stackLLstk;// 运算数栈用于后缀表达式计算// 计算函数根据运算符c计算a和b的结果LLcalc(LL a,LL b,charc){switch(c)// 根据运算符进行相应计算{case:// 加法{returnab;}case-:// 减法{returna-b;}case*:// 乘法{returna*b;}case/:// 除法{returna/b;}default:// 默认情况不应该发生{return0;}}}intmain(){chars[260];// 输入字符串缓冲区LL num0;// 当前正在读取的数字boolreadingNumfalse;// 标记是否正在读取数字// 读取一行输入直到遇到换行符cin.getline(s,260);// 遍历输入字符串直到遇到结束符for(inti0;s[i]!;i){if(s[i]0s[i]9)// 如果是数字字符{numnum*10(s[i]-0);// 构建多位数readingNumtrue;// 标记正在读取数字}elseif(s[i] )// 如果是空格数字结束符{if(readingNum)// 只有在读取了数字后才压栈{stk.push(num);// 将完整数字压入栈num0;// 重置数字readingNumfalse;// 标记数字读取结束}}else// 如果是运算符{// 如果前面有数字未压栈先压栈if(readingNum){stk.push(num);num0;readingNumfalse;}// 从栈中弹出两个操作数LL bstk.top();// 第二个操作数stk.pop();LL astk.top();// 第一个操作数stk.pop();// 计算并将结果压回栈中stk.push(calc(a,b,s[i]));}}// 输出栈顶元素最终计算结果coutstk.top();return0;// 程序正常结束}【运行结果】16 9 4 3 *- -47