前缀表达式求值
#include<bits/stdc++.h>
using namespace std;
string s;
int main(){
int i;
stack<int> q;
cout<<"Please enter a prefix expression\n";
getline(cin,s);
for(i=s.size()-1;i>=0;i--){
if(s[i]>='0'&&s[i]<='9'){
if(s[i-1]<'0'||s[i-1]>'9'){
int x=s[i]-'0';
q.push(x);
}
else{
int f=s[i]-'0';
i--;
while(s[i]>='0'&&s[i]<='9'){
f*=10;
f+=s[i]-'0';
i--;
}
string s1=to_string(f);
reverse(s1.begin(),s1.end());
int x=stoi(s1);
q.push(x);
}
}
else{
if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/'){
int t1=q.top();
q.pop();
int t2=q.top();
q.pop();
if(s[i]=='+'){
int x=t1+t2;
q.push(x);
}
else{
if(s[i]=='-'){
int x=t1-t2;
q.push(x);
}
else{
if(s[i]=='*'){
int x=t1*t2;
q.push(x);
}
else{
int x=t1/t2;
q.push(x);
}
}
}
}
}
}
cout<<"The value is:"<<q.top();
return 0;
}
后缀表达式求值
#include<bits/stdc++.h>
using namespace std;
string s;
int main(){
int i;
stack<int> q;
cout<<"Please enter a suffix expression\n";
getline(cin,s);
int n=s.size()-1;
for(i=0;i<=n;i++){
if(s[i]>='0'&&s[i]<='9'){
if(s[i+1]<'0'||s[i+1]>'9'){
int x=s[i]-'0';
q.push(x);
}
else{
int f=s[i]-'0';
i++;
while(s[i]>='0'&&s[i]<='9'){
f*=10;
f+=s[i]-'0';
i++;
}
string s1=to_string(f);
reverse(s1.begin(),s1.end());
int x=stoi(s1);
q.push(x);
}
}
else{
if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/'){
int t1=q.top();
q.pop();
int t2=q.top();
q.pop();
if(s[i]=='+'){
int x=t2+t1;
q.push(x);
}
else{
if(s[i]=='-'){
int x=t2-t1;
q.push(x);
}
else{
if(s[i]=='*'){
int x=t2*t1;
q.push(x);
}
else{
int x=t2/t1;
q.push(x);
}
}
}
}
}
}
cout<<"The value is:"<<q.top();
return 0;
}