早教吧 育儿知识 作业答案 考试题库 百科 知识分享

算术表达式转化成逆波兰式(C语言)问题描述:编写程序实现将输入的数学表达式转换成后缀式(逆波兰式),并对后缀式进行计算,输出得到的值。测试数据:输入3*(7-5)+(4+8)/3#输出375-*48+3/+#

题目详情
算术表达式转化成逆波兰式(C语言)问题描述:编写程序实现将输入的数学表达式转换成后缀式(逆波兰式),并对后缀式进行计算,输出得到的值。 测试数据 : 输入3*(7-5)+(4+8)/3# 输出375-*48+3/+# 10
▼优质解答
答案和解析
你可以扩展一下。 // 中缀表达式转化为后缀表达式,仅支持加减乘除运算、操作数为1位十进制非负整数的表达式。 char* infix2postfix(const char *infix, char *postfix) { const size_t N = strlen(infix); if (N == 0 || postfix == NULL) { return postfix; } stack opcode(N); // 堆栈存放的是操作符 for (size_t i = 0; i < N; i++) { switch (infix[i]) { case '(': // 直接忽略左括号 break; case ')': // 弹出操作符 *postfix++ = opcode.pop(); *postfix++ = ' '; break; case '+': case '-': case '*': case '/': opcode.push(infix[i]); // 压入操作符 break; default: if (isdigit(infix[i])) // 如果是数字,直接输出 { *postfix++ = infix[i]; *postfix++ = ' '; } } } return postfix; }
看了算术表达式转化成逆波兰式(C语...的网友还看了以下: