后缀表达式c语言
① c语言后缀表达式问题,程序调试过程中每经过一个if,i就加1,不知道是为什么
第一个while循环内最后结束部分,有i++,i++相当于i=i+1;
② C语言后缀表达式
*和/同一级 +和-同一级
你的是不是优先算*
导致d/e*f变成了d/(e*f)
有本数据结构与算法分析 上面有讲到这类算法
③ C语言后缀表达式转换成中缀表达式
在计算机上用的
1、利用栈来实现
2、利用语法树来实现
先把中缀表达式用二叉树表示出来,再后序遍历该二叉树就得到相应的后缀表达式了
在草稿上手工转换
3、加括号法
④ c语言后缀表达式++
printf("%d,%d\n",(b++)++,b);
printf中不可用逗号,可用空格键。
⑤ C语言:前缀表达式和后缀表达式的文法分别为前缀表达式 E->*(E,E)|+(E,E)|a
#include<stdio.h>
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main() {
string str;
stack<char>mystack;
while (getline(cin, str)) {
printf("\n");
for (int i = 0; i < str.size(); i++) {
if (str[i] == 'a' or str[i]==',') {
cout << str[i];
}
else if (str[i] == '+' or str[i] == '-' or str[i] == '*' or str[i] == '/' ) {
mystack.push(str[i]);
}
else if (str[i] == '(') {
cout << str[i];
}
else if (str[i] == ')') {
cout << str[i] << mystack.top();
mystack.pop();
}
}
}
}