#include <iostream>
using namespace std;
#define MAXSIZE 100
//栈应用 计算后缀表达式
//计算模块
int count(int a,char op,int b){
if(op == '+'){
return a+b;
}
if(op == '-'){
return a-b;
}
if(op == '*'){
return a*b;
}
if(op == '/'){
if(b == 0){
cout<<"ERROR"<<endl;
return -111;
}
return a/b;
}
return -111;
}
//创建逻辑模块
//用栈去解决问题,
//从左往右循环遍历数组:取数组的每一个值,如果是数值则压入栈,如果是运算符,则弹出栈中的两个元素,计算后在压入栈,依次类推,直到遍历结束,栈底的元素则为运算结果
int suffixCount(char exps[],int n){
int stack[MAXSIZE];
int top = -1;
for(int i = 0;i < n;i++){
if(exps[i] >= '0' && exps[i] <= '9'){
stack[++top] = exps[i]-'0';
}else{
int b = stack[top--];
int a = stack[top--];
int c = exps[i];
int num = count(a,c,b);
stack[++top] = num;
}
}
return stack[top];
}
int main()
{
char exps[] = {'1','2','+','3','4','*','4','/','+'};
int num = suffixCount(exps,9);
cout<<"计算结果为:"<<num<<endl;
return 0;
}
c/c++栈应用 计算后缀表达式
最新推荐文章于 2024-08-29 16:39:06 发布