可以做婚礼视频的网站,2023设计院裁员惨烈程度,平面设计包括哪些软件,佛山做网站公司哪家好解法#xff1a;直接给算法 创建一个栈和一个空的后缀表达式字符串。 遍历中缀表达式中的每个字符。 如果当前字符是操作数#xff0c;直接将其添加到后缀表达式字符串中。 如果当前字符是操作符#xff0c;需要将其与栈顶的操作符进行比较#xff1a; 如果栈为空#…解法直接给算法 创建一个栈和一个空的后缀表达式字符串。 遍历中缀表达式中的每个字符。 如果当前字符是操作数直接将其添加到后缀表达式字符串中。 如果当前字符是操作符需要将其与栈顶的操作符进行比较 如果栈为空或者栈顶操作符是左括号(则将当前操作符压入栈中。 如果当前操作符的优先级大于栈顶操作符的优先级将当前操作符压入栈中。 如果当前操作符的优先级小于等于栈顶操作符的优先级将栈顶操作符弹出并添加到后缀表达式字符串中然后继续比较当前操作符与新的栈顶操作符直到符合压入条件。 如果当前字符是(将其压入栈中。 如果当前字符是)需要将栈中的操作符弹出并添加到后缀表达式字符串中直到遇到左括号为止。将左括号弹出但不添加到后缀表达式字符串中。 遍历完所有字符后将栈中剩余的操作符弹出并添加到后缀表达式字符串中。 返回后缀表达式字符串。 原则就是有括号先算括号里的先乘除优先级2再加减优先级1
#includeiostream
#includestring
#includestack
using namespace std;bool isop(char c) {if (c || c - || c * || c /) {return true;}else return false;
}
int jibie(char op) {if (op || op -) {return 1;}else if (op * || op /) {return 2;}return 0;
}
string trans(string s) {string p;stackchar sk;for (int i 0; i s.size(); i) {char c s[i];if (c a c z || c A c Z || c 0 c 9) {p c;}else if (isop(c)) {while (!sk.empty() jibie(sk.top()) jibie(c)) {p sk.top();sk.pop();}sk.push(c);}else if (c() {sk.push(c);}else if (c )) {while (!sk.empty() sk.top() ! () {p sk.top();sk.pop();}sk.pop();}}while (!sk.empty()) {p sk.top();sk.pop();}return p;
}
int main() {string str;cin str;cout trans(str);return 0;
}